二进制数的表示方法

1.原码、反码、补码

原码

机器数最高为符号位,0正1负。

X=-0.1011,[X]=11011 ,小数点默认在符号位之后,书写时将其省略。

补码

[X]=[X](X>0)

[X]=[X]除符号位取反加1(X<0)

[+0]=[-0]=0.0000

补码加法运算

  • 补码加补码还是补码
  • [X+Y]=[X]+[Y],减法可看作加相反数。
  • 符号位和数值位一样参与运算

溢出处理:当结果超出范围时称为溢出。

  • 两正负号相同的数相加,结果符号不同,则溢出。
  • 任意符号数相加,符号位进位和数值最高位进位不相等,则溢出。
  • 若采用双符号数,00表示整数符号位,11是负数,01为上溢,10为下溢。

多符号位的补码叫“变形补码”。

一般运算用双符号位,存储保留一个fS1

反码

[X]=[X](X>0)

[X]=[X]除符号位取反(X<0)

移码

[X]=-[X],即对[X]符号取反。

在计算机中,移码(阶码)只执行加减法运算,且结果要修正,即[X]+[Y]+2n=[X+Y],也就是对符号位取反。

0的移码唯一且为100...0。

数据小于最小数(移码<=-2n)时称为机器零,置阶码(移码)为0000...0,不管尾数如何,都是浮点数下溢。

2.定点数和浮点数

2.1 定点数

小数点固定在某位,包括小数(小数点在数值左符号右)和整数(小数点在数值右)。

2.2 浮点数

小数点位置可以浮动。

N=M*RE

N:浮点数,Mantissa:尾数,Exponent:阶码,Radix:阶的基数/底,常数,常为2、8、16。

计算机中R都相同,不需在每个数据都表示,因此浮点数如下表示:

MS E M
尾数符号位,1位 阶码,最高位符号位,n+1位 m位

M由MS和M组成一个定点小数。

尾数规格化:R=2且尾数不为0,绝对值大于等于(0.5)10,即大于等于(0.1)2,即小数位最高位是1。对于不规格的数,左右移动尾数,同时修改阶码值,以保持值不变。

尾数为0时,无论阶码如何,浮点数值为0,称为机器0。

IEEE754标准,常用浮点数有以下两种格式:

(1)单精度浮点数(32位)

E:8 bit,M:24 bit(包括一位符号位)

(2)双精度符号位(64位)

E:11 bit,M:53 bit(包括一位符号位)

多数通用机中浮点数尾数常用补码表示,阶码用补码或移码表示。[X]=-[X],即对[X]符号取

IEEE754标准中,一个规格化的32位浮点数N的真值表示为N=(-1)s * (1.M) * 2E-127

浮点数由于阶码的存在而扩大了数据的范围,32位单精度数范围:-2127~(1-2-23)*2127,精度是24位。

posted @ 2020-11-20 16:41  鱼大鹿  阅读(721)  评论(0编辑  收藏  举报