负数表示
- 符号幅度
符号幅度是负数的非常简单的表示。在符号幅度上,第一位专用于表示符号,因此将其称为符号位。
符号位“ 1”代表负号。
符号位“ 0”表示正号。
在一个–位数字的符号幅度表示中,第一位将代表符号,其余的n-1位将代表数字幅度。
例如,
- +25 = 011001
其中11001 = 25
而“ +”则为0
- -25 = 111001
其中11001 = 25
而1代表“-”。
用符号幅度方法表示的数字范围=-(2 n-1 -1)到+(2 n-1 -1)(对于n位数字)
但是符号大小存在一个问题,那就是我们有两个0的表示形式
+0 = 000000
– 0 = 100000
- 2的补码方法
为了以这种形式表示一个负数,首先我们需要对以简单的正二进制形式表示的数字取1的补码,然后将其加1。
例如:
(-8) 10 =(1000) 2
1的补数1000 = 0111
将1加0111 +1 = 1000
因此,(-8) 10 =(1000) 2
请不要将(8) 10 = 1000和(-8) 10 = 1000混淆为4位,我们不能表示大于7的正数。因此,1000仅表示-8。
2的补数表示的数字范围= (- 2 n-1至2 n-1 – 1)
数字的浮点表示
- 32位表示浮点数IEEE标准
正常化
- 浮点数通常是规范化的
- 调整指数以使尾数的前导位(MSB)为1
- 由于它始终为1,因此无需存储它
- 科学计数法,将数字标准化为小数点前的一位数字,例如在十进制系统中,例如3.123 x 10 3
例如,我们用32位格式表示3.625。
将3更改为二进制= 11
在二进制文件中更改.625
.625 X 2 1
.25 X 2 0
.5 X 2 1
以二进制指数形式编写
3.625 = 11.101 X 2 0
归一化
11.101 X 2 0 = 1.1101 X 2 1
偏置指数= 127 + 1 = 128
(128) 10 =(10000000) 2
为了变得有意义
小数点后的位数= 1101
扩展到23位= 11010000000000000000000
设置符号位
因为它是一个正数,所以符号位= 0
最后,我们根据代表进行安排
Sign bit exponent significand
0 10000000 11010000000000000000000
- 64位表示浮点数IEEE标准
同样,我们遵循相同的过程进行标准化。此后,我们添加1023以使指数偏差。
例如,我们以64位格式表示-3.625。
将二进制3更改为11
在二进制文件中更改.625
.625 X 2 1
.25 X 2 0
.5 X 2 1
以二进制指数形式编写
3.625 = 11.101 X 2 0
归一化
11.101 X 2 0 = 1.1101 X 2 1
在偏置指数1023 + 1 = 1024时
(1024) 10 =(10000000000) 2
因此11位指数= 10000000000
52位有效位数= 110100000000…………。共计52位
设置符号位= 1(数字为负)
所以,最终代表
1 10000000000 110100000000…………。通过再加0使得总数为52位
将浮点转换为十进制
让我们将FP编号转换为十进制
1 01111100 11000000000000000000000
IEEE数字的十进制值由以下公式给出:
(1 -2s)*(1 + f)* 2 (e –偏差)
在哪里
- s,f和e字段在此处取小数。
- (1 -2s)为1或-1,具体取决于符号位0和1
- 如公式中所示,向有效数(分数字段f)添加隐式1
同样,对于单精度或双精度,偏差分别为127或1023。
首先将每个单独的字段转换为十进制。
- 符号位s为1
- e字段包含01111100 =(124) 10
- 尾数为0.11000…=(0.75) 10
将这些值放在公式中
(1 – 2)*(1 + 0.75)* 2124 – 127 =(– 1.75 * 2 -3 )= – 0.21875
本文由Anuj Batham提供。