本文共 1598 字,大约阅读时间需要 5 分钟。
无符号数
有符号数
- 表示范围: -32768~+32767
- 正值:0
- 负数:1
有符号数(小数)
小数:+0.1011表示:
01011 小数点位置在0
.1011
小数:-0.1011表示:
1 1011小数点位置在1
.1011
有符号数(整数)
+1100 表示:
01100小数点位置在01100
. -1100表示:
11100小数点位置在11100
. 0+0=0 | 0-0=0 | 0*0=0 |
0+1=1 | 1-1=0 | 0*1=0 |
1+1=0 | 1-0=1 | 1*0=0 |
1+1+1=1 | 0-1=1 | 1*1=1 |
真值
机器数
原码
原码又称为带符号的绝对值表示
- 整数的符号位与数值位用(逗号)隔开
- 小数的符号位与数值位用(小数点)隔开
- 例子:
- x=+1110时,原码【x】原=0,1110
- x=-1110时,原码【x】原=1,1110
- x=0.1101时,原码【x】原=0.1111
- x=-0.1101时,原码【x】原=1.1101
- 有原码求真值:
- 原码【x】原=1.0011,得到 x=-0.0011
- 原码【x】原=1,1100,得到 x=-1100
- 原码【x】原=0.1101,得到 x=0.1101 原码中的“零”有两种表示方式:
- 【+0.0000】原=0.0000
- 【-0.0000】原=1.0000
补码
只要确定了模,就可以找到一个与负数等价的正数(改正数就是负数的补数),这样就可以把减法运算用到加法实现
- 正数相对于“模”的补数就是正数本身
- +7 = +7 (mod 10)
- 一个正数和一个负数互相为补数时,他们俩的绝对值和就是模数
- -3 = +7 (mod 10)所以补数= |-3| + |7|=10
- 例如:
- x=+1010 【x】补=0,1010(正数补数为自身)
- x=-1101 【x】补=1,0011 即(负数: 取反+1)
- x=0.1001,【x】补=0.1001(正数补数为自身)
- x=-0.0110,【x】补=1.1010(负数: 取反+1)
补码中的0只有一种表达方式:【+0】补=【-0】补=0.0000
已知补码求真值:
(注意先判断正负,负数取反,正数不改变)
- [x]补=1.0101 x=-0.1011(原码除去符号位取反,再+1)
- [x]补=1,1110 x=-0010(原码除去符号位取反,再+1)
- [x]补=0.1101 x=0.1101(正数不改变)
反码
x为整数时:
- x=+1101时,反码=0,1101(正数反码还是本身)
- x=-1101时,反码=1,0010(负数反码,除符号位取反)
x为小数时:
- x=+0.0110时,反码=0.0110
- x=-0.0110时,反码=1.1101
反码中的0有两种表达方式:
- 【+0.0000】反=0.0000
- 【-0.0000】反=1.1111
移码
利用二进制数,比较十进制数21和-21的大小
答:
x=21,对应的二进制数为
+10101,【x】补=0,10101
x=-21,对应的二进制数为
-10101,【x】补=1,01011
如果按照补码进行比较,则101011 > 010101,答案错误
x=
10101 加上2的5次方 10101+100000=
110101 x=
-10101加上2的5次方 -10101+100000=
001011 所以 110101>001011
移码: [x]移=2的n次方 + x 例如:
- x=10100 则在【x】移=2*5+ x=100000+10100=1,10100
- x=-10100 则在【x】移=2*5+ x=100000-10100=0,01100
- 同一个真值的移码和补码仅相差一个符号位
- x=-10100 则在【x】补=1,01100 【x】移=0,01100
转载地址:http://nothn.baihongyu.com/