300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 计算机 原码 反码 补码

计算机 原码 反码 补码

时间:2019-03-31 14:07:22

相关推荐

计算机 原码 反码 补码

由于基础知识不牢进行补脑

以下举例无特殊说明,都是以8位为例。

符号位

符号位定义:在内存寄存器最高位定义为符号位,1表示负数、0表示正数。

举例:在byte中一共有8个位。

0000 0001 表示的是正数,最高位为 0 即是

1000 0001 表示的是负数,最高位为 1 即是

原码

原码定义:

0000 0001 表示+1的原码

1000 0001 表示-1的原码

反码

反码的定义:

正数的反码是其本身

负数的反码,除符号位外取反。

举例:

[+1] 0000 0001 反码为 0000 0001

[-1]1000 0001 反码为11111110,需要注意的是符号位。

补码

补码的定义:

正数的补码为原码

负数的补码为原码的反码 + 1

举例:

+1 的原码为 0000 0001,

+1 的反码为 0000 0001,

+1 的补码为 0000 0001.

-1 的原码为 1000 0001,

-1 的反码为 1111 1110,

-1 的补码为 1111 1111.

以上是关于 原码、反码、补码的定义。

那么计算机为什么用 原码、反码、补码呢?原因是减法,具体详情

计算机在存储整数时,储存的都是整数的补码。

计算机在存储整数时,储存的都是整数的补码。

计算机在存储整数时,储存的都是整数的补码。

这是数学科学家为解决减法问题,在CPU中使用加法器而设计的补码,实现减法。

下面用4个位做介绍,原理都是一样的,不想用8位介绍的原因是,字面上过多的0或1给视觉造成干扰。

对于计算机中的二进制,最高位是 0,我们知道这个数是正整数,可以计算出这个数的十进制。

例如:0010,计算十进制为(最高位为符号位,不参与运算) 0*2^2 + 1*2^1 + 0*2^0 = 2

因为正数原码反码补码定义为本身,可以用上面计算方法得出十进制值,

可是对于一个负数呢?

例如:‭1110,首先最高位为1,可以判定这个数为负数,并且这个二进制在计算机中是一个负数的补码,所以不容易从表面直观看出这个数的十进制,所以要转换成原码。

负数的补码= 原码->补码(取反码 + 1)

负数的原码 = 补码 >补码(取反码 + 1)

求补码的原码(以下例子是一个负数的补码)

反码 :

1110 ‬

1001

加1:

1001

1010

最终得到原码1010,最高位为1表示是负数,后面的三位二进制是010,

010 计算十进制为(最高位为符号位,不参与运算) 0*2^2 + 1*2^1 + 0*2^0 = 2,因为最高位为1,

所以1110的十进制是-2

二进与十六进制

以下是个人的方便记忆的快速理解,不代表科学性,仅供参考。

用十六进制表示负数

在 4位中 -1 的补码为 1111,

1111 所有位计算值为 1*2^3+1*2^2+1*2^1+1*2^0 = 15 = 0XF(十六进制)

在 8位中 -1 的补码位 1111 1111,那么十六进制为 0XFF

思考

1000 0000 是多少呢?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。