机器字长:寄存器的位数(计算机的数均存放于寄存器中)
若机器字长为16位:
有符号数的范围为-2^15 — 2^(15) - 1
(注意:-2^15在原码中是无法表示的,但在计算机存储的补码形式可以表示)
无符号数的范围为0 — 2^(16) -1
用0表示正号,用1表示负号:-1100(真值) -> 11100(机器数)
原码
X = +1110时 [X]原 = 0,1110
X = -1110时 [X]原 = 1,1110 (逗号只是为了区分符号位实际不存在)
X = 0.1101时 [X]原 = 0.1101
X = -0.1101时 [X]原 = 1,1110(注意不是10.1101,因为0并不是有效数据位)
若字长为n+1,原码整数的表示范围:
补码
对于纯整数:
对于纯小数:
原码、反码和补码的关系:
正数,原码=反码=补码
负数,原码符号位不变其他位取反为反码,反码+1为补码
例题:
已知某机器字长为8位(含一位符号位),令A = 15,B =24, 求A-B
分析:计算机中的运算我们一般采用补码运算
【A】补=00001111
【B】补=00110000
如果用[A]补-[B]补,显然减不了,这里我们可以根据一个基本公式
[A]补+ [B] 补= [A + B]补
[A]补 - [B]补 = [A]补 + [-B]补=[A-B]补