day5:位运算的理解
!!!前提注意!!!
!!!有无符号数!!!
无符号数
没有符号的数,写出来多少就是多少
有符号数
最高符号位代表正负数:1(负数) 0(正数)
位运算:计算机现在可以存储所有的数字(整数,浮点数,字符)的运算
作用
1.找出最高效的运算方式
2.底层的调试器,通过位运算来查看CPU的状态
运算方式
1.与门(or gate)
1011 0001
1101 1000
----------与运算
1001 0000
2或门(or gate)
1011 0001
1101 1000
----------与运算
1111 1001
3异或运算(xor)
1001 0010
0100 1011
---------异或运算
1101 1001
位运算的加减乘除
加法(4+5)
**计算机计算时不会直接进行加减乘除**
0000 0100
0000 0101
---------+
0000 1001
需要通过运算法则来实现运算
#实现原理
#第一步,异或运算,如果不考虑进位,异或运算可以直接结出结果
0000 0100
0000 0101
---------异或
0000 0001
#第二步,与运算(判断进位,如果与运算结果为0则没有进位)
0000 0100
0000 0101
---------与运算
0000 0100
#第三步,将与运算的结果左移一位得到0000 1000(进位后的结果)
#第四步异或运算(第一步与第三步的结果进行运算)
0000 0001
0000 1000
----------异或
0000 1001
#第五步,与运算(判断进位,如果结果为0,没有进位),验算
0000 0001
0000 1000
----------与
0000 0000
#所以最终的结果为 0000 1001
减法(4-5)
减法需要用到补码
将4-5理解成4+(-5)
4->0000 0100
5->0000 0101
-5为5的补码->1111 1011
0000 0100
1111 1011
----------加法的过程
1111 1111
其中1111 1111是-1的补码
将其转化为原码则为1000 0001
#所以最终的结果为1000 0001
```![](/i/l/?n=22&i=blog/2978308/202210/2978308-20221004193811558-458272636.png)
![](/i/l/?n=22&i=blog/2978308/202210/2978308-20221004193831549-2129389267.png)
标签:0000,运算,0100,异或,理解,1001,0001
From: https://www.cnblogs.com/ningcode/p/16754305.html