
1、三码转换、补码到底+剥开现象看本质&精益求精的追求。
2、有符号数和浮点数+国家的全面发展。

数表示法依据不同的角度可以分为不同的类型。从数的是否带符号,可分为带符号数和无符号数;从数的符号的表示方法,可分为真值和机器数;从数制角度,可分为二进制数、十进制数、八进制数和十六进制数等;从计算机编码角度,数的表示法有原码、反码和补码;对于小数点的表示,可以分为定点表示法和浮点表示法。

(1)有符号数和无符号数
用一位二进制位表示数的符号:0表示正数,1表示负数,这种表示数的方法,称为有符号数的表示方法。所表示的数,叫做有符号的数。有符号的数其最高位为符号位。
如果将全部有效位都用来表示数的大小,这种数的表示方法,叫无符号数的表示方法,所表示的数,叫无符号数。

(2)真值与机器数
真值就是利用"+"、"-"表示数的符号,数值部分为数的绝对值。例如:N1=+1101001B= +105;N2=-1101001B=-105。数的真值可以使用二进制形式、八进制形式、十进制形式或十六进制形式表示。
机器数就是在机器中用最高位表示数的符号,其它位表示数值的大小。这时最高位叫做符号位,规定用“0"表示正,“1’’表示负。这样对于n位二进制数,如果它是一个带符号的数,则最高位Bn-1就表示数的符号,剩下的n-1位表示数的大小。简单的说,机器数就是数据在机器中的二进制表示形式,机器数所表示的值称为该机器数的“真值”。
例如:一个带符号的数11101001B,最高位"1"为符号位,代表“-”其它位为数的值,它的真值为:-1101001B(-105)。

(1)定点数和浮点数
定点数:也称为整数,小数点固定在数的最右边。例如十进制整数-65的计算机内表示可以是11000001。
浮点数:也称为实数。小数点的位置是浮动的,其范围和精度分别用阶码和尾数来表示。浮点数的指数部分称为阶码,其符号称为阶符;浮点数的小数部分称为尾数,其符号称为数符。例如:-6.375 D = -110.011(B) = -11.0011×2^+1 = -1.10011×2^+10 = -1100.11×2^-01 = -0.110011×2^+11
(2)浮点数的表示与规格化
在计算机中,为了提高数据表示精度,必须唯一地表示小数点的位置,因此规定浮点数必须写成规范化的形式,即数值部分是一个小数,小数点前的数字是零,小数点后的第一位数字不是零。因此,-0.110011×2^+11是-6.375的规格化浮点数,并且按照阶符+阶码+数符+尾数的方式存储在计算机里。


原码:是一种直观的机器数表示法,用最高位表示符号,符号位为0表示该数为正,符号位为1表示该数为负,数值部分为原数的绝对值。如:-5的原码为10000101,+9的原码为00001001。
反码:正数的反码与原码相同,负数的反码是对其原码除符号位外的部分求反。符号位也参与计算。如:-5的反码为11111010,+9的反码为00001001。
补码:正数的补码和原码相同,负数的补码是在其反码的最后一位上加1。如:-5的补码为11111011,+9的补码为00001001。

如果用原码计算,则出现两个问题,一是0不唯一,+0用00000000表示,-0用10000000表示,二是计算不正确,-5+9=10000101+00001001=10001110 = -14 D
如果用反码计算,同样出现两个问题,一是0不唯一,+0用00000000表示,-0用11111111表示,二是计算也不正确,-5+9=11111010+00001001=1 00000011,最高位溢出舍去,即-5+9=00000011=+3 D
如果用补码计算,0的表示唯一,+0用00000000表示,-0用1 00000100,最高位溢出,舍去,即+4D。
结论:计算机采用二进制补码进行存储和计算。
以下课件源自于北京交通大学,课件中反码和补码的中文字有误。