数据的机器层次表示

一、数值数据的表示

1、原码表示法

    原码表示法是一种最简单的机器数表示法,其最高位为符号位,符号位为 0 0 0 时表示该数为,符号位为 1 1 1 时表示该数为,数值部分与真值相同。
    在原码表示中,真值 0 0 0 有两种不同的表示形式: [ + 0 ] 原 = 00000 [+0]_原=00000 [+0]=00000 [ − 0 ] 原 = 10000 [-0]_原=10000 [0]=10000

2、补码表示法

    补码的符号位表示方法与原码相同,其数值部分的表示与数的正负有关:对于正数,数值部分与真值形式相同;对于负数,将真值的数值部分按位取反,且在最低位上加1。
    在补码表示中,真值 0 0 0 的表示形式是唯一的: [ + 0 ] 补 = [ − 0 ] 补 = 00000 [+0]_补=[-0]_补=00000 [+0]=[0]=00000

3、反码表示法

    反码表示法与补码表示法有许多类似之处,它与补码的区别是末尾少加一个 1 1 1
    在反码中,真值 0 0 0 也有两种不同的表示形式: [ + 0 ] 反 = 00000 [+0]_反=00000 [+0]=00000 [ − 0 ] 反 = 11111 [-0]_反=11111 [0]=11111

二、机器数的定点表示与浮点表示

1、定点表示法

2、浮点表示法

    让小数点的位置根据需要而浮动,这就是浮点数。例如: N = M × r E N=M\times r^E N=M×rE式中: r r r 是浮点数阶码的底,与尾数的基数相同,通常为 2 2 2 E E E M M M 都是带符号的定点数, E E E 叫做阶码(Exponent) M M M 叫做尾数(Mantissa)
    规格化浮点数:一个浮点数的表示形式并不是唯一的。例如:二进制数 0.0001101 0.0001101 0.0001101 可以表示为 0.001101 × 2 − 01 、 0.01101 × 2 − 10 、 0.1101 × 2 − 11 0.001101\times 2^{-01}、0.01101\times2^{-10}、0.1101\times2^{-11} 0.001101×2010.01101×2100.1101×211……而只有 0.1101 × 2 − 11 0.1101\times2^{-11} 0.1101×211 是规格化数,这就如同十进制实数中的科学标识法一样。

3、浮点数阶码的移码表示法

    移码就是在真值 X X X 基础上加一个常数,这个常数被称为偏置值,相当于 X X X 在数轴上向正方向偏移了若干单位,这就是“移码”一词的由来。即 [ X ] 移 = 偏 置 值 + X [X]_移=偏置值+X [X]=+X
    移码具有以下特点:
1)在移码中,最高位为 0 0 0 表示负数,最高位位 1 1 1 表示正数,这与原码、补码以及反码的符号位取值正好相反。
2)移码全为 0 0 0 时,它所对应的真值最小;全为 1 1 1 时,它所对应的真值最大。因此,移码的大小直观的反映了真值的大小,这将有助于两个浮点数进行阶码的大小比较。
3)真值 0 0 0 在移码中的表示形式也是唯一的,即 [ + 0 ] 移 = [ − 0 ] 移 = 10000000 [+0]_移=[-0]_移=10000000 [+0]=[0]=10000000
4)移码把真值映射到一个正数域,所以可将移码视为无符号数,直接按无符号数的规则比较大小。
5)同一数值的移码和补码除最高位相反外,其它各位相同。

4、浮点数尾数的基数

5、IEEE 754 标准浮点数

    下面以32位的短浮点数为例,讨论浮点代码与其真值之间的关系。最高位为数符位;其后 8 8 8 位阶码,以2为底,用移码表示,阶码的偏置值为 127 127 127;其余 23 23 23 位是尾数数值位。对于规格化的二进制浮点数,数值的最高位总是1,为了能使尾数多表示一位有效值,可将这个1隐含,因此尾数数值实际上是24位(1位隐含位+23位小数位)
    :将 ( 100.25 ) 10 (100.25)_{10} (100.25)10 转换成短浮点数格式。
1)把十进制数转换成二进制数。 ( 100.25 ) 10 = ( 1100100.01 ) 2 (100.25)_{10}=(1100100.01)_2 (100.25)10=(1100100.01)2
2)规格化二进制数。 1100100.01 = 1.10010001 × 2 6 1100100.01=1.10010001\times 2^6 1100100.01=1.10010001×26
3)计算出阶码的移码(偏置值+阶码真值)。 1111111 + 110 = 10000101 1111111+110=10000101 1111111+110=10000101
4)以短浮点数格式储存该数。
因为, 符 号 位 = 0 符号位=0 =0 阶 码 = 10000101 阶码=10000101 =10000101 尾 数 = 10010001000000000000000 尾数=10010001000000000000000 =10010001000000000000000所以,短浮点数代码为: 0 ; 10000101 ; 10010001000000000000000 0;10000101;10010001000000000000000 0;10000101;10010001000000000000000表示为十六进制的代码: 42 C 88000 H 42C88000H 42C88000H

三、非数值数据的表示

1、字符和字符串的表示

2、汉字的表示

四、十进制数和数串的表示

1、十进制数的编码

2、十进制数串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值