巩固通用计算机二进制位运算相关内容,增强数据加解密的能力
# 一。位运算的结果与参与运算的变量的符号有关
二进制正负表示方法
- 原码
- 反码
- 补码
这里我们只会用到原码与补码
通用位运算 & | ^ << >> ~
# 当有负数参与时
首先进行与正数相同的位运算 (负数都是补码表示的)
# & | ^
// 进行按位与 & amp; | |
1 1 1 1 1 1 0 0 = -4补 | |
0 0 0 0 0 1 0 1 = 5 | |
———————— | |
0 0 0 0 0 1 0 0 = -4 & 5 = 4 | |
// 进行按位与 & amp; | |
1 1 1 1 1 1 0 0 = -4补 | |
1 1 1 1 1 0 1 1 = -5补 | |
———————— | |
1 1 1 1 1 0 0 0 = -4&-5 = -8 | |
———————————————— |
# <<>>
对于 << >>
移位操作
<<
二进制整体左移 (符号位和前面的去掉),会在低位补 0, 不论正负都一样
>>
二进制整体右移
- 对于正数,会在高位补 0
- 对于负数,会在高位补 1
正数右移 | |
0 0 0 0 0 0 0 0 0 1 0 1 = 5 | |
0 0 0 0 0 0 0 0 0 0 0 1 = 5>>2 = 1 | |
负数右移 | |
1 1 1 1 1 0 1 1 = -5 | |
1 1 1 1 1 1 1 0 = -5>>2 = -2 |