本文主要是介绍常用的逻辑运算及其指令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. xor亦或运算
只有在两个比较的位不同时其结果是1,否则结果为0
即“两个输入相同时为0,不同则为1”!
00000000 | 11111111 | 11111111 | 0101 | |
---|---|---|---|---|
xor | 00000000 | 11111111 | 00000000 | 0010 |
结果 | 00000000 | 00000000 | 11111111 | 0111 |
2. and与运算
只有两个位都是1时才为1
即有假(0)即得假(0)
00000000 | 11111111 | 11111111 | 0101 | |
---|---|---|---|---|
and | 00000000 | 11111111 | 00000000 | 0010 |
结果 | 00000000 | 11111111 | 00000000 | 0000 |
3. or或运算
与and运算相逆,只有两个位为0时才得0
即有真(1)即为真(1)
00000000 | 11111111 | 11111111 | 0101 | |
---|---|---|---|---|
or | 00000000 | 11111111 | 00000000 | 0010 |
结果 | 00000000 | 11111111 | 11111111 | 0111 |
4. shl逻辑左移,asl算数左移
这两个运算效果相同,向左移位,右边加补0
5. shr逻辑右移
向右做移位运算,左边补零
6. sar算数右移
当操作数为正数时,移位后左边补0
单操作数为负数时,移位后左边补1(与负数在计算机中的表示是补码有关)
7. shr与sar测试
测试说明:
我在测试时拿16和-16当操作数,所有测试数都做了右移1位的运算。上面是操作数,下面是对应的计算结果,计算结果分别用十进制和二进制表示。
可见对-16逻辑右移之后结果变成了一个非常大的数字,因为最高位补上了0。
这篇关于常用的逻辑运算及其指令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!