定点数的表示“原码”“补码”“反码”and“移码”
如何将一个数存进计算机,此数的真值为-101.5,我们需要考虑什么? 需要考虑三个问题:①符号位“-”;②数码==“1015”;③小数点符号位的处理:
无符号
- 无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。
- 若机器字长为8位,则数的表示范围为0~(2^8-1),即0 ~ 255
- 有符号数:将符号数字化,0表示正号,1表示负号。
- 符号数的表示方法:原码、补码、反码。
概念 | 解析 |
---|---|
真值 | 用正负号表示正数和负数,这样的数值称为真值 |
机器数 | 用1位数码0或1表示正数和负数,这样的数值称为机器数 |
原码 | 1表示正数,0表示负数;有效值用二进制的绝对值表示 |
补码 | 正数的补码=原码,负数的补码符号为“1”,数值部分取反+1 |
反码 | 正数的反码=原码,负数的反码符号为“1”,数值部分取反 |
例:设x=-1101,那么[x]原、[x]补、[x]反分别为?并且将[x]补转换为[x]原?②[0]原、[0]补、[0]反
[x]原=1,1101
[x]补=1,0011
[x]反=1,0010
将[x]补=1,0011除了符号位外各位取反+1,得1,1101=[x]原
+0 | -0 |
---|---|
[+0.0000]原=[0.0000] | [-0.0000]原=[1.0000] |
[+0.0000]补=[0.0000] | [-0.0000]补=[0.0000] |
[+0.0000]反=[0.0000] | [-0.0000]反=[1.1111] |
③已知[x]补,求[-x]补
例:已知[x]补=1.0010010,求[-x]补?无论真值是正数还是负数,只要将[x]补连同符号位在内取反,末位+1,即可得到[-x]补。
首先将1.0010010连同符号位取反,得到0.1101101,然后加上1,得到[-x]补=0.1101110
④无符号数与有符号数的范围区别
同样的一个字节,无符号数的最大值为255,而有符号数的最大值为127,原因是有符号数的最高位被挪去当作符号。
x | 范围 |
---|---|
无符号数x | 0≤x≤255 |
有符号数x | -128≤x≤127 |
缘由:用补码表示阶码的时候,当阶码无限小,产生了下溢的时候,阶码变成了0,那么这个浮点数的值变为了1。
假设补码的符号位为0,加上2^n,则0就变成了1;此次分享就到这里,欢迎大家指导指正~ 我是爱吃肉的小白yyyloki,如果你觉得不错的话点个赞吧!我们下次见~886 【定点数的表示“原码”“补码”“反码”and“移码”】
如果补码的符号位是1,加上2^n,则变成10,由于最高符号位进位需要舍弃,因此又变成了0.
文章图片
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量