一、数值数据的表示
真值与机器数
真值:正负号加上二进制数的绝对值;
eg:-00010101B
机器数:在机器中使用连同数符一起数码化的数;
eg:10010011B
数字的位数都为8位。
机器数的范围
字长为8位,无符号整数的最大值为:11111111B=255D,机器数的范围为0~255;
字长为16位,无符号数的最大值为:1111 1111 1111 1111B=65535D,范围为0~65535;
8位有符号整数的表示范围是-128~127
8位有符号数可以表示的最大值:01111111即2^7-1 = 127(7个1运算结果为2^7-1)
1byte: 8bit -128~127
2byte: 16bit -2^15~2^15-1
4byte: 32bit -2^31~2^31-1
8byte: 64bit -2^63~2^63-1
解释:8进制的范围
00000001到01111111,表示1~127,即127个正数
10000001到11111111,表示-1~-127,即127个负数
出上面之外就只剩下00000000,10000000 ;
这样计算机就规定00000000就表示0,10000000便是-128
(-1) + (-127) = -128
(10000001) + (11111111) 在计算机中使用二进制补码表示(11111111) + (10000001) = 10000000
因此10000000就用来表示-128了。
数的机器码表示:有符号数表示
(1)原码:+1110001——0111 0001
(2)反码:正数的原反补码都一致,负数的反码为除了符号位之外的各位按位取反。
eg:y=-1011011——反码为: 10100100
tips:反码的计算可以根据原码出发,上例中原码表示为11011011,除符号位1外的1011011按位取反即可。
计算机内不会直接用反码进行计算的!
(3)补码
补码为在反码的最低为+1;
eg:+0和-0的理解,+0的补码为0000 0000
-0为1000 0000,反码为1111 1111,补码为1 0000 0000,由于计算机计算选取为8位,-0补码的最高位1溢出,保留剩余位数0000 0000,由此可得+0和-0在计算机运算过程相等。
(4)移码
补码的符号位取反即可。
其他存储数据的方式:
BCD码:4位二进制数表示一位十进制数,自左至右每一位对应权重为8、4、2、1。
eg:1000 1001B=89D。
二、定点数的加减法运算
计算机中存储数据用补码形式,故加减运算也是考虑补码运算的。其中,符号位和数值位一起参与运算。
eg:已知机器字长为8位,x=44D,y=53D;求x-y。
解:x=00101100;y=00110101,
x补=00101100,-y=10110101,
-y的反码为:11001010,补码为:11001011,
则x-y可以表示为x+(-y)的补码,11110111,
进一步逆过程转化为十进制, 11110111对应的反码为:11110110,原码为:10001001B,带符号的数,转化为十进制即-9.