位运算介绍

4/8/2022 位运算

# 位运算符

位运算符号 解释 举例
& 按位与(有0则0)
| 按位或(有1则1)
^ 按位异或(不同为1,相同为0)
~ 取反
<< 左移(高位丢弃,低位补0,相当于十进制数乘2) 补充资料 (opens new window)
>> 右移(正数右移、负数右移)
>>> 无符号右移(同正数右移一样)

# 原码、反码、补码

  1. 正数的原码、反码、补码相同
  2. 负数的反码相对于原码符号位不动,其余位取反,补码相对于反码加1
  3. 举例如下
整数 6 -6
原码 00000000 00000000 00000000 00000110 10000000 00000000 00000000 00000110
反码 00000000 00000000 00000000 00000110 11111111 11111111 11111111 11111001
补码 00000000 00000000 00000000 00000110 11111111 11111111 11111111 11111010

💡 最高位表示符号位0表示正,1表示负

计算机中不管是正数还是负数,都是以补码的形式进行存储并计算的

至于为什么用补码而不是原码,其主要原因还是为了数字间的计算方便,可参考这篇文章 (opens new window)

# 右移

  • 正数右移

    正数右移高位需补0

  • 负数右移

    负数右移高位需补1

  • 无符号右移

    无符号右移和正数右移相同,都是高位补0

Last Updated: 7/2/2022, 8:32:08 PM