位运算也是一种运算符,它比+-*/都快。
主要有以下几类:
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中的值跟上面你说的那种结果是一样的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)