pascal中shl的用法

pascal中shl的用法,第1张

这是位运算!

位运算也是一种运算符,它比+-*/都快。

主要有以下几类:

a and b 把a和b都转化成二进制,分别对二进制的a和b的每一位进行and运算。

例如6 and 5 =4 ---> 6=110,5=101,6 and 5=110 and 101 =100 =4。

a or b 把a和b都转化成二进制,分别对二进制的a和b的每一位进行or运算。

例如6 or 5 =7 ---> 6=110,5=101,6 or 5=110 or 101 =111 =7。

not a 把a转换成二进制,分别对二进制的每一位进行not 运算

(根据数据类型不同结果也不同茄手)

a shl b 等价于 a<<b 表示将a转换成二进制后向左移动b为。

例如:6 shl 2 =110 shl 2 =11000=24

a shr b 等价于 a>>b 表示将a转换成二进制后向右移动b为。

例如:24 shr 2 =11000 shr 2 =110=6

a xor b 将a、b转成二进制后进行不进位的加法运算。

例如:6 xor 5 =3 110 xor 101 =011=3

建议初学者先不要去学习这些位运算,因为它昌轮们都是颤迅嫌根数据类型有关,通常用于

boolean类型(只有1位),用于整数多用于优化程序方面。

你这个语法上有错误吧

shl的迹镇语法应该下面这样,如果移动位数大于1,必须把移动位数放在cl中

mov cl,4

shl al,4

shl是逻辑左移,也就是把数值向左移动指定位磨塌数,移出的最高位放置在CF标志位中,然后移进的位用0 补姿游粗齐,每向左移动一位就相当于乘以2,移动了4位就相当于乘以了四次2一样,它的功能也相当于下面这样

a:mov cx,4-----循环4次

mov bl,2------每次乘以2,

mul bl------cpu自动取al中的值乘以bl,然后把结果放置在ax中,当然al中正是我们需要的

loop a------循环四次就相当于四次乘以2

然后循环完毕后al中的值跟上面你说的那种结果是一样的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12302402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存