📜  计算机算术|套装– 1

📅  最后修改于: 2021-06-28 17:11:08             🧑  作者: Mango

负数表示

  • 符号幅度

符号幅度是负数的非常简单的表示。在符号幅度上,第一位专用于表示符号,因此将其称为符号位。

符号位“ 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标准

图形10
正常化

  • 浮点数通常是规范化的
  • 调整指数以使尾数的前导位(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标准

图形11
同样,我们遵循相同的过程进行标准化。此后,我们添加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提供。