计算机组成原理--数据表示

1.基本概念

  • 真值:+0101,-0100  
  • 机器数: [x]原=0101

机器数就是用 0表示正数,1表示负数。

2.几种机器数

  • 原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001

第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:

[1111 1111 , 0111 1111]==>[-127 , 127]

 

  • 反码:

    反码的表示方法是:

    • 正数的反码是其本身
    • 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
      [+1] = [00000001]原 = [00000001]反
      [-1] = [10000001]原 = [11111110]反
  • 补码:

    补码的表示方法是:

    • 正数的补码就是其本身
    • 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
      [+1] = [00000001]原 = [00000001]反 = [00000001]补
      [-1] = [10000001]原 = [11111110]反 = [11111111]补

 

 

 

引用:https://www.cnblogs.com/wqbin/p/11142873.html

 

移码:

移码最简单了,不管正负数,只要将其补码的符号位取反即可。

例如:X=-101011 , [X]原= 10101011 ,[X]反=11010100,[X]补=11010101,[X]移=01010101

 

3.定点数和浮点数

定点数:小数点固定 x.xxxxxx,表示范围受限,忘掉它吧

 

浮点数:数的范围和精度分别表示。

 

一般格式 :EEEE......EMMM.......M,E部分是阶码(数的范围i),M部分是尾数(数的精度)。

缺点:阶码和尾数位数不固定,太灵活了

E:阶码位数,决定数据的范围

M:尾数位数决定数的精度

IEEE754格式:跟我背下来----

32位的是(单精度):1位符号位S + 8位偏指数E + 23位有效尾数M,偏移值为127。

64位的是(双精度):1位符号位S + 11位偏指数E + 52位有效尾数M,偏移值为1023。

真值就是(32位为例) N = (-1)^S * 2^(E-127) * 1.M

 

例题:

 

 

 

 

 上面是32位精度

 S:1表示负数 ,0表示正数

 

 

 

 

 

 

 

 

 

浮点数的特殊情况:

E=0,M=0:机器零

E=255,M=0:无穷大,对应于x/0

E=255,M!=0:非数值NaN,对应0/0

ps:附上一份IEEE754文档:link

 

 

posted @ 2021-09-16 10:37  halfup  阅读(358)  评论(0编辑  收藏  举报