3、计算机高速基础-位运算

210 阅读1分钟

在十进制中,数字前面用减号来表示负数,而计算机只有 0 和 1,没有其他任何符号,它怎么表示负数呢?

这就涉及到计算机编码的问题了。

计算机编码

计算机内部用补码表示数字,高位为符号位,0开头表示正数,1开头表示负数。

二进制中的原码、反码和补码描述如下。

原码:就是数字本身。比如 1110 的原码就是 1110。

反码:将原码除符号位按位取反就是反码。比如 1110 的反码是 1001。

补码:将反码加 1 就是补码。比如 1110 的反码是 1001,补码就是 1010。

为什么要用补码呢?

因为可以避免负数和减法,利用高位溢出,将减法变成加法。这样,计算机就不用设计减法器了,直接用加法器就可以做减法了。

计算机只有加法器,没有减法器。

计算机用补码表示所有数字。正数的反码和补码都等于原码,负数的反码等于除符号位外其他位按位取反,负数的补码等于反码加 1。

二进制反码补码
正数等于原码等于原码
负数除符号位按位取反反码加 1

位运算

  • 真值表
pqp 与 qp 或 q!pp异或q
000010
100101
010111
111100
  • 补充
  • 左移:低位补 0,等于乘法。
  • 右移:高位补符号位,正数等于除法,负数可以先按正数计算,然后转成负数。
  • 无符号右移:高位补 0。