计算机位运算:
学习内容:
1、位运算介绍
2、计算机如何做加法
位运算介绍:
符号 | 描述 | 规则 |
---|---|---|
& | 与 | 两个位都为1时,结果才为1 |
“竖杠” | 或 | 两个位都为0时,结果才为0 |
^ | 异或 | 两个位相同为0,相异为1 |
~ | 取反(非) | 0变1,1变0 |
<< | 左移 | 各二进位全部左移若干位,高位丢弃,低位补0 |
>> | 右移 | 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移) |
计算机如何计算加法:
1、计算机中负数用正数的补码表示
比如:
正数:`数字1,使用8位的byte表示
0000 0001
负数:数字-1,使用8位byte表示
1111 1111
为什么呢?补码含义就是对应的正数取反加1如下
正数1取反是:
1111 1110
再加1,得到-1
1111 1111
2、计算加法:
如计算2+3的值:
0000 0010
0000 0011
---------------
0000 0101
对应位相加,有进位向前进1位,但是计算机如何知道向前进位呢?它是如何计算呢?
计算机步骤如下:
0000 0010
0000 0011
---------------异或运算,不考虑进位直接得出结果
0000 0001
0000 0010
0000 0011
---------------与运算,判断进位,如果都为0则没有进位
0000 0010
此时有进位,向左全部移动一位得到0000 0100
将两次得出的值在进行与运算再判断有没有进位如下:
0000 0001
0000 0100
-----------与运算,判断左移一次是否还有进位
0000 0000
发现全部为0,没有进位,将二者进行异或得到最终结果
0000 0001
0000 0100
-----------
0000 0101
得出最终值0000 0101=5
``