计算机存储单位
1T = 1024G
1G = 1024M
1M = 1024KB
1KB = 1024B //B ,即Byte,字节
1B = 8bit //bit 比特,1bit就是一个二进制位,一个二进制位就是0或1
码制
1.机械值
计算机存储的数值,用二进制表示。
2.真值
机械值有符号之分,如果看做是有符号的数,那么最高位表示其符号值,机械值就表示其真值。
3.原码
符号位+真值表示原码,最高位表示符号位,其余位数表示数字值。
正数符号位表示为0,负数符号位表示为1。
正数1: 1 = [0000 0001]原
负数1: -1= [1000 0001]原
因为CPU只有加法器没有减法器,所以计算机在进行减法运算是都是转换为加法
计算机在计算时,符号位会直接参与运算
5 + (-3)
0000 0101
1000 0011
---------------
1000 1000 ----(-8)结果错误
4.反码
正数的反码等于其原码
负数的反码在原码的基础上,符号位不变,其他数值位按位取反
+1 = [0000 0001]原 = [0000 0001]反
-1 = [1000 0001]原 = [1111 1110]反
5 + (-3) 反码进行运算,结果不正确
0000 0001
1111 1110
---------------------
1 0000 0001 ------ 最高位溢出 0000 0001 = 1
5.补码
正数的补码等于其原码
负数的补码是在其反码的基础上加上1,符号位为1
+1 = [0000 0001]原 = [0000 0001]反 = [0000 0001]补
-1 = [1000 0001]原 = [1111 1110]反 = [1111 1111]补
计算机整数的存储都是以补码形式存储
5 + (-3) 补码进行计算,结果正确
0000 0001
1111 1111
---------------------
1 0000 0010 ---------最高位溢出 0000 0010 = 2
6.零 0
原码
正 0 = [0000 0000] 负0 = [1000 0000]
1byte 能表示的范围[-127, 127] 总计255个数
反码
正 0 = [0000 0000] 负0 = [1111 1111]
1byte 能表示的范围[-127, 127] 总计255个数
补码
正 0 = [0000 0000] 负0 = [0000 0000]
1byte 能表示的范围[-128,127] 总计256个数
[-128] = [1 1000 0000]原 = [1 0111 1111]反 = [1 1000 0000]补