计算机字长
用几位二进制数表示数字,二进制数的计数规则是逢二进一,借一当二
符号位
最高位就是符号位。例如:数字用4位二进制位表示,那么最高位就是符号位,
无符号数
-
机器字长的全部二进制位都是数值位
-
如果最高位为1那么,无符号数取补码 === 有符号数
-
8位二进制的值域:[0,255]
0000,0000 1111,1111
有符号数
-
机器字长的二进制位包含最高位的符号位(0 或1) + 数值位(也称为真值域)
-
如果符号位为1那么,有符号数取补码 === 无符号数
-
8位二进制的值域:[-128,127]
1000,0000 ~ 0111,111
原码
原码是带符号的绝对值表示
反码
- 0
- 正数:与原码相同
- 负数:符号位不变,数值位取反
补码
计算机中正数负数的加减运算都是通过补码来完成的,最后再转换为原码。因为是如果使用原码、反码来进行加减的话,结果有误。
- 0: 他本身
- 正数:与原码相同
- 负数:负数的反码 + 1。如果发生溢出,那么符号位不变,溢出的舍弃。
位移运算
位运算是基于二进制bit来的,对于数的运算,要先转换为二进制之后再运算。
无符号位运算
左移 <<
m<<n = m * 2^n:m左移n位之后的值 === m * 2的n次方
有符号位运算
符号位不变,数值位左移或右移