2.1 原码、反码与补码
在计算机内的数(称之为机器数)值有3种表示法:原码、反码和补码。所谓原码就是带正、负号的二进制数,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。由此可见,这三种表示法中,关键是负数的表示方式不一样。
2.2.1 正负数表示、定点数与浮点数
在计算机内,通常把1个二进制数的最高位定义为符号位,用“0”表示正数,“1”表示负数;其余位表示数值。
规定小数点位置固定不变的数称为定点数;小数点的位置不固定,可以浮动的数称为浮点数
2.2.2 原码
原码表示法是定点数的一种简单的表示法。用原码表示带符号二进制数时,符号位用0表示正,1表示负;数值位保持不变。原码表示法又称为符号-数值表示法。
1. 小数原码表示法
设有一数为x,则原码表示可记作[x]原(下标表示)。例如,X1= 1010110 X2= -1001010
原码表示数的范围与二进制位数有关。设二进制小数X=±0.X1X2…Xm,则小数原码的定义如下:
例如:X=+0.1011时, 根据以上公式可得[X]=0.1011X=0.1011时,根据以上公式可得[X]= 1--0.1011=1.1011=1.1011
当用8位二进制来表示小数原码时,其表示范围为:最大值为0.1111111,其真值约为(0.9910 ;最小值为1.1111111,其真值约为(-0.9910。根据定义,小数“0”的原码可以表示成0.0…01.0…0
2. 整数原码表示法
整数原码的定义如下:
例如:X=+1101时,根据以上公式可得[X]=01101X=1101时,根据以上公式可得[X]=24--1101=10000+1101=11101
当用8位二进制来表示整数原码时,其表示范围为:最大值为01111111,其真值为(12710 ;最小值为11111111,其真值为(-12710 。同样,整数“0”的原码也有两种形式,即00…010…0
2.2.3 反码
用反码表示带符号的二进制数时,符号位与原码相同,即用0表示正,用1表示负;数值位与符号位相关,正数反码的数值位和真值的数值位相同;而负数反码的数值位是真值的数值位按位变反。
1. 小数反码表示法
设二进制小数X=±0.x1x2…xm,则其反码定义为:
例如,X=+0.1011时,根据以上公式可得[X]反=0.1011;当X=-0.1011时,根据以上公式可得[X]反=2-2-4+X=10.0000-0.0001-0.1011=1.0100。根据定义,小数“0”的反码有两种表示形式,即0.0…01.1…1
2. 整数反码表示法
设二进制整数X=±Xn-1Xn-2…X0,则其反码定义为:
例如,X=+1001时,根据以上公式可得[X]反 = 01001;当X=-1001时,根据以上公式可得[X]反 = 25-1+X= 100000-1+-1001= 11111-1001=10110
同样,整数“0”的反码也有两种形式,即00…011…1
采用反码进行加、减运算时,无论进行两数相加还是两数相减,均可通过加法实现。加、减运算规则如下:
[X1+X2]反 =X1]反 + X2]反
[X1-X2]反 =X1]反 +-X2]反 
运算时符号位和数值位一样参加运算。当符号位有进位时,应将进位加到运算结果的最低位,才能得到最后结果。
2.2.4 补码
用补码表示带符号的二进制数时,符号位与原码、反码相同,即用0表示正,用1表示负;数值位与符号位相关,正数补码的数值位与原码、反码相同。而负数补码的数值位是真值的数值位按位变反,并在最低位加1
1. 小数补码的定义
设二进制小数X=±0.X-1X-2…X-m,则其补码定义为:
例如,X= + 0.1011时,根据以上公式可得[X]补= 0.1011X = - 0.1011时, 根据以上公式可得[X]补 = 2 + X = 10.0000 - 0.1011 = 1.0101 
小数“0”的补码只有一种表示形式,即0.0…0
2. 整数补码表示法
设二进制整数X=±Xn-1Xn-2…X0,则其补码定义为:
例如,X = +1010时,根据以上公式可得[X]补 = 01010X = -1010时,根据以上公式可得[X]补 = 25+ X = 100000-1010 = 10110。同样,整数“0”的补码也只有一种表示形式,即00…0。采用补码进行加、减运算时,可以将加、减运算均通过加法实现,运算规则如下:
X1 + X2]补 =X1]补 +X2]补
X1 - X2]补 =X1]补 +-X2]补 
运算时,符号位和数值位一样参加运算,若符号位有进位产生,则应将进位丢掉后才得到正确结果。例如,若X1 = -1001X2 = +0011,则采用补码求X1-X2的运算如下:[X1-X2]补=X1]补+-X2]补= 10111+11101。即:[X1-X2]补= 10100 。因符号位为1,表示是负数,故X1-X2 = -1100
2.2.5
是指一个计量系统的计数范围。如时钟中的一个小时就是60分钟,这个60分钟就是
计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个。表示n位的计算机计量范围是02n-1,模=2n。即n位二进制所能表示的无符号整数的范围:0≤x≤2n-1n位二进制所能表示的有符号整数的范围:-2n-1+1≤x≤2n-1-1n位二进制补码所能表示的数值范围为:-2n-1≤X≤2n-11
实质上是计量器产生溢出的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。
对于计算机,模也就是相应位数寄存器所能表示的最大数再加1。如8位寄存器所能存储的数是11111111=255,这样8位寄存器的模就等于255+1=256
2.2.6 BCD码、阶码与移码
1. BCD
BCD编码将一个字节的8个位拆分成高4位和低4位两个部分,也就是说一个字节能存储两个数字。所以BCD的编码过程就是将数字压缩的过程,将两个字节的数字压缩成一个字节。反之,解码就是把一个字节的数字拆分为两个数字单独存放(大部分的处理都是按字节处理的)。
2. 阶码
对于任意一个二进制数n,可用N=S x 2P表示,其中S为尾数,P为阶码,2为阶码的底,PS都用二进制数表示,S表示N的全部有效数字,P指明小数点的位置。
3. 移码
浮点数的阶码表示指数大小,有正有负,为避开阶码的符号,对每个阶码都加上一个正的常数(称偏移常数),使能表示的所有阶码都为正整数,变成偏移了的阶码,又称增码
2.3 二进制的运算
2.3.1 二进制的四则运算
二进制数与十进制一样,同样可以进行加、减、乘、除四则运算。其算法规则如下:
加运算:0+0=00+1=11+0=11+1=10
减运算:1-1=01-0=10-0=10-1=1
乘运算:0*0=00*1=01*0=01*1=1
除运算:二进制只有两个数(01
具体的四则运算方法参见书本。
2.3.2 补码运算
补码的加法运算规则是:
[XY]= [X ]补+[Y]
该式表明,当有符号的两个数采用补码形式表示时,进行加法运算可以把符号位和数值位一起进行运算(若符号位有进位,则丢掉),结果为两数之和的补码形式。
例如用补码进行下列运算:(+33)+(+15);(+33)+(-15),最终的结果分别是[+48]补和[+18] 补。
补码的减法运算规则是:
[XY]=[X]补+[Y]
该式表明,求[XY]补可以用[X]补与 [Y]补相加来实现。
[Y]补是对减数进行求负操作。一般称已知 [Y]补求得 [Y]补的过程叫变补或求负。已知[+Y]补求[-Y]补的规则是全部位(含符号位)按位取反后再加1
具体的补码计算步骤参见书中介绍。
2.3.3 二进制的逻辑运算
二进制的逻辑运算有异或四种。
1. “运算(AND
运算又称逻辑乘,用符号“.”来表示。运算规则如下:
00 = 0  01 = 0    10 = 0    11 = 1
即当两个参与运算的数的对应码位中有一个数为0,则运算结果为0,只有两码位对应的数都为1结果才为1。这与前面介绍的二进制乘法运算是一样的。
2. “运算(OR
运算又称逻辑加,用符号“+”表示。运算规则如下:
00 = 0    01 = 1  10 = 1  11 = 1
即当两个参与运算数的相应码位只要有一个数为1,则运算结果为1,只有两码位对应的数均为0,结果才为0。如“10111101”进行运算后就得到“01000010”,对比相应位即可验证以上运算规则了。
3. “运算(NOT
运算实现逻辑否定,即进行求反运算,非运算规则:0 = 11 = 0。注意运算只是针对一个数所进行的运算,这与前面的运算不一样。它的实质意义就是取反。如“10111101”进行运算后就得到“01000010”,对比相应位即可验证以上运算规则了。
4. “异或运算(XOR
异或运算用符号来表示。其运算规则如下:0 0 = 0 0 1 = 11 0 = 11 1 =
0 。即当两个参与运算的数取值相异时,运算结果为1,否则为0。下面两图是两个二进制数异或运算过程。
小数和分数的补码
  一、十进制分数补码可以先将分子和分母分别表示成二进制数,然后计算出二进制小数,再按下面第三步的方法将求出小数的补码形式。
  37/64=100101B/2^6=0.100101B 负数二进制补码运算法则
  -51/128=110011B/2^7=0.0110011B

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。