美文网首页
计算机基础知识 - 原码、反码、补码

计算机基础知识 - 原码、反码、补码

作者: HRocky | 来源:发表于2018-08-31 14:14 被阅读0次

1.原码

1.1.原码概念

原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。

1.2.原码的优点

简单直观;例如,我们用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011

1.3.原码的缺点

原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中原码
00000001+10000001=10000010,换算成十进制为-2。显然出错了。
所以原码的符号位不能直接参与运算,必须和其他位分开,这就增加了硬件的开销和复杂性。

2.反码

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

对于二进制:
原码10010= 反码11101 (10010,1为符号码,故为负)

3.补码

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

3.1.整数补码

3.1.1.正数

正整数的补码是其二进制表示,与原码相同。

【例1】+9的补码是00001001。

3.1.2.负数

负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1 。

【例2】求-5的补码。
-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011)

3.1.3.补码转化为原码

已知一个数的补码,求原码的操作其实就是对该补码再求补码:
⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
⑵如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。

【例4】已知一个补码为11111001,则原码是10000111(-7)。
因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
其余七位1111001取反后为0000110;
再加1,所以是10000111。

参考

相关文章

  • 位运算

    1.原码、反码、 补码正数的原码、反码、 补码都一样 正数以原码存储在计算机负数 以补码存储在计算机 例...

  • Java中高位转低位溢出的计算过程

    结果是: 计算机中是以补码进行计算 正数的反码补码都是原码,如:10原码: 1010反码: 1010补码:1010...

  • 进制关系

    各进制的形式 正数的原码、反码、补码相同 负数的反码为原码各位取反,补码为反码+1 计算机的底层都是以补码的方式来...

  • JAVA中负数的二进制表示

    计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码,反码=原码按位取反 补码=反码+1。 移码为补码...

  • 为什么byte的范围是-128~127?

    在研究这个问题前,首先需要知道计算机中的原码、反码、补码正数的原码、反码、补码都是本身负数的反码是将原码除符号位全...

  • 软件测评师做题技巧

    第一类补码,反码,原码 正数:原码=反码;补码=原码负数:反码=原码求反;补码=反码+1 第二类用例概率的计算 测...

  • 原码、反码、补码和移码

    书中关于原码、反码、补码和移码的定义如下(n是机器字长):原码: 反码: 补码: 移码: 原码, 反码, 补码的基...

  • 原码 反码 补码的简单计算附例题

    原码 反码 补码 对计算机中常见数据简单分类 机器数 与 真值 原码 反码 补码 扩展 对计算机常见数据的分类 机...

  • 2018-10-22 Python31 原码、反码、补码

    原码、反码、补码 1)如何计算补码?规则: 正数:原码 = 反码 = 补码负数:反码 = 符号位不变,其他位取反补...

  • 原码、反码、补码

    计算机中数值以补码形式存放原码反码:符号位不变,数值位在原码上取反补码:符号位不变,数值为在原码上取反并加一(反码...

网友评论

      本文标题:计算机基础知识 - 原码、反码、补码

      本文链接:https://www.haomeiwen.com/subject/tolswftx.html