计算机组成圆原理 数据的机器级表示总结

目录

一.数制和编码

1.进制

2. 定点与浮点数的表示

3.机器数(原,反,补,移)

 二,整数

1.无符号整数

2.带符号整数

3.C语言中的整数类型

三.实数的表示

1.浮点数的表示格式

2.浮点数的规格化

3. IEEE 754 浮点数标准

4.C语言中的浮点数类型

 四.逻辑值


一.数制和编码

1.进制

 十进制到二进制,八进制,十六进制都是一样的算法,只是除数换成了基数:

小数换算二进制,八进制,十六进制也类似,只是乘的数变成了对应的基数:

 二进制转换成八进制:每三位等值一位八进制位

 二进制转换十六进制:每四位等值一位十六进制位

2. 定点与浮点数的表示

任意一个二进制数可以表示为:

 浮点数的表示范围比定点数要大得多,(通常用0表示正号,1表示负号)

3.机器数(原,反,补,移)

什么是真值,真值就是现实中那个带符号的数就叫真值

机器数一定是0/1序列,通常用十六进制表示

原码:正负数编码仅符号位不同,0的表示方式有两种000...0和100...0,与真值对应关系更直观,             转换更加方便,现代计算机不用原码来表示整数,只用定点原码小数来表示浮点数的尾数               部分

补码:真值为正,及符号位为0,则数值部分不变 ;真值为负,符号位为1,数值部分各位取反,             末位加一;已知X的补码,则各位取反,末位加一求-X的补码

 溢出:两个n位二进制数在进行运算过程中可能会产生超过n位的数,如果低n位数不能正确表示                运算结果,及丢掉的那部分是运算结果的一部分,就称之为溢出

反码:负数的反码就是各位取反,不加一

移码:浮点数的指数都是用移码来表示,移码和补码的区别只有符号位相反

 二,整数

1.无符号整数

无符号整数就是正整数或非负整数(0)

优点:无符号整数省略了符号位,因此正数的表示范围比带符号整数的表示范围更大,eg:八位无符号整数最大数255,而带符号的仅有127

2.带符号整数

现代计算机中带符号整数都用补码表示

补码的优势:

  1. 与原码和反码相比,补码的数0表示形式唯一
  2. 与原码移码相比,补码运算系统是一种模运算系统,可用加法实现减法运算
  3. 补码比原码和反码多一个最小负数
  4. 与反码相比,补码不需要用循环进位来调整结果

3.C语言中的整数类型

数后面加u或U则表示无符号数

C语言中,执行运算时,同时具有无符号数和带符号数参加,则带符号数将被强制转换成无符号数

第一条和最后一条举例说明:

三.实数的表示

1.浮点数的表示格式

直接用例题来说吧:

1.IBM 370  短浮点数格式:0位为数符S,1~7位表阶码(偏置常数为64)8~31位六位十六进制原码小数表示的尾数M,基数为16,阶码变化1等于尾数移动4位,将十进制65794转化为IBM 370的32位短浮点数格式:

 只要尾数为0,指数为任意值都为0,称为机器零,因此机器零不唯一;通常用阶码和尾数同时为0来唯一表示机器零,机器零有+0和-0之分

2.浮点数的规格化

对浮点数的尾数进行规格化,除了能得到尽量多的有效数位以外,还可以使浮点数的表示具有唯一性;

若浮点数的基数为2,则浮点数形式应为+-0.1bbbb....bb*2^E(b为0或1);

还有一个点就是左规和右规。

3. IEEE 754 浮点数标准

IEEE 754提供了两种基本浮点格式:32位单精度和64位双精度(基数隐含为2;尾数用原码表示;省略尾数中第一位的1,及隐藏位,偏执常数分别为127和1023)、

好处:尾数可表示的尾数多一位,因而使浮点数的精度更高//指数的可表示范围更大,因而使浮点数范围更大

  1. 全0阶码全0尾数:+0/-0;0的符号取决于s,一般等效
  2. 全0阶码和非0尾数:非规格化数;非规格化数的隐藏位为0,单精度和双精度浮点数指数分别为-126或-1022;可用于处理阶码下下溢,使出现比最小规格化数还小的数时程序也能继续进行下去

3.全1阶码全0尾数:正无穷/负无穷

  1. 产生不发信号的非数:NaN
  2. 产生明确的结果

     4.全1阶码非0尾数:NaN

引入NaN的目的是为了检测非初始化值的使用,当最高有效位为1时,为不发信号(静止的)NaN

当最高有效位为0时,为发信号(通知的)NaN

5.阶码非全0且全非1:规格化非0数

 浅做个题吧

求 IEEE 754 单精度浮点数 C0A00000H的值是多少?

4.C语言中的浮点数类型

  1.  从int转换成float时,不会发生溢出,但可能有数据被舍入
  2. int或float转换成double时,double有效位更多,故能被精确保留
  3. 从double转换成float时,float表示范围更小,可能发生溢出,此外,有效数位变少,可能发生舍入
  4. 从float或double转换成int时,可能会发生截断

 四.逻辑值

逻辑数据只能参与逻辑逻辑运算,并且是按位进行的 ,如按位与,按位或,逻辑左(右)移

逻辑数据和数值数据都是一串0/1序列,逻辑运算指令处理的是逻辑数据,算数运算指令处理的是数值数据

(还剩下数据的宽度的宽度与储存与数据校验码,放到明天再来补充)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是祈哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值