[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jcylg2Cz-1593509865779)(C:\Users\李志伟\AppData\Roaming\Typora\typora-user-images\image-20200630134752389.png)]
机器数
就是数值在计算机中的二进制表现形式
机器数在计算机中有符号,使用最高位表示符号,使用0表示正使用1表示负
一个字节8个bit位表示
+5=0000 0101
-10=1000 1010
真值
机器数所表示的真正的数值
如:1000 1010 =-10
原码
原码就是符号位加上真值的绝对值 范围(10000000-01111111) (-128-127)
反码
正数:正数的反码=原码 如:+3=00000011 (原码)= 0000 0011(反码)
负数:符号位不变,其余各位直接取反 如:-7 原码:1000 0111 反码 1111 1000
补码
计算机中数据以补码的形式存储与计算
正数:原码=反码=补码 如:3 0000 0011(原码)= 0000 0011(反码) =0000 0011(补码)
负数:首先求的反码,在反码的基础上加1加到最低位
eg:
-34 -29 -47
原码 1010 0010 1001 1101 1010 1111
反码 11011101 11100010 1101 0000
补码 11011110 11100011 1101 0001
为什么需要反码和补码
反码:
在设计计算机时,只有加法器没有减法器。为了将减法转换为加法,设计反码。
但是反码有缺陷,正负相加0的表示不唯一。
补码:
为了解决反码正负相加不唯一的情况使用高位溢出解决
使用补码计算:
45-19 00101101 +11101101=00011010
53-27 00110101+11100101=00011010
65-34 01000001 +11011110=00011111
-34-27 11011110 +11100101=11000011
将补码转换为原码
正数:不需要转
负数:求补码的补码
将负数的补码当作原码,然后求该原码的补码
求原码:除符号位取反加一
eg:
补码 反 原码
11011110 10100001 10100010
10011011 11100100 11100101
11100011 10011100 10011101
10010011 11101100 11101101
eg:
1000 0000(补码)= -128
1111 1111 1000 0000(-128补码)求原码
1000 0000 0111 1111 + 1 = 1000 0000 1000 0000