数据表示
例如,十进制数1234.56,其数值可计算如下:
1234.56 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 + 5 * 10^-1 + 6 * 10^-2
例如二进制数10100.01B的值可计算如下:
10100.01B = 1 * 2^4 + 1 * 2^2 + 1 * 2^-2 = 20.25
例如十六进制数8ABH的值可计算如下:
8ABH = 8 * 16^2 + 10 * 16^1 + 11 * 16^0
十进制转二进制
诀窍:使用‘除二取余’ 法,将余数从下往上排列
2 86 余 0
2 43 余 1
2 21 余 1
2 10 余 0
2 5 余 1
2 2 余 0
1
得到1010110
二进制转八进制
诀窍:从右开始,每三位为一组,不够三位的补0即可。每组按8421 权展开求和,最终得到八位进制数
11101001 = 351
8 4 2 1
0 1 1 -> 3
1 0 1 -> 5
0 0 1 -> 1
二进制转十六进制
诀窍:从右开始,每四位为一组,不够三位的补0即可。每组按8421 权展开求和,最终得到十六位进制数
11101001 = E9
8 4 2 1
1 1 1 0 -> E
1 0 0 1 -> 9
1 -1 1-1 最左边的是位数是符号位,0表示正数,1表示负数。
原码 0000 00001 1000 0001 1000 0010 1-1运算是两个数的二进制相加运算,同1相加进1位
反码 0000 00001 1111 1110 1111 1111 正数原码,反码,补码一致。负数的反码是原码除符号位不变,其余取反的结果。
补码 0000 00001 1111 1111 0000 0000 负数反码是 反码基础上 末位补1.
移码 1000 00001 0111 1111 0000 0000 正数、负数的移码是补码的基础上,符号位取反。(移除符号位)
补码是最适合进行数字的加减运算的数字编码
移码只用于表示浮点数的阶码,所以只用于整数
原文:https://www.cnblogs.com/linbin7/p/10872662.html