原码、反码、补码之间有何区别?

2026-05-25 04:591阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计604个文字,预计阅读时间需要3分钟。

原码、反码、补码之间有何区别?

原文链接:https://blog.csdn.net/LCW0102/article/details/120258453

在机器中,数字都用二进制存储,符号数字有原码、反码和补码三种表示形式。这三种表示中,最高位都代表符号位。

原文链接:blog.csdn.net/LCW0102/article/details/120258453

数字在机器中都用二进制来进行存储,有符号数则有原码、反码和补码三种表示方式
这三种表示方式里,最高位都代表的是符号位,1代表负数,0代表正数

1.原码

一个数的原码就是该数直接转化成二进制得到的数字,第一位是符号位

原码、反码、补码之间有何区别?

+8的原码:0000 1000 -8的原码:1000 1000 2.反码

正数的反码是自己本身

+8的原码:0000 1000 +8的反码:0000 1000

负数反码就是原码除了符号位不动,其他所有位按位取反

-8的原码:1000 1000 -8的反码:1111 0111 3.补码

正数的补码是自己本身

+8的原码:0000 1000 +8的反码:0000 1000 +8的补码:0000 1000

负数的补码是反码加一得到的(运算时包括符号位)

-8的原码:1000 1000 -8的反码:1111 0111 -8的补码:1111 1000 小结:

正数的原反补码都是相等的,负数的原反补码是相互转换得到的(负数的补码 = 该数的反码 + 1)

4.补码存在的意义

在机器中,数值一律用补码来表示和存储。

使用补码的原因:

  1. 使用补码可以将符号位和数值域统一处理
  2. 两个数字之间进行加减法运算时是将数字拿到CPU中进行计算的,而CPU只有加法器,要将减法转换成加法,所以可以利用补码使加减法统一操作

举个例子:
计算 8 - 5
因为CPU只有加法器所以要将 8 - 5 转换成 8 + (- 5) 来计算

(+8) 8的原码:0000 1000 8的反码:0000 1000 8的补码:0000 1000 (-5) -5的原码:1000 0101 -5的反码:1111 1010 -5的补码:1111 1011 8 - 5 = 8+(-5)  0000 1000 +1111 1011 ----------------------------   0000 0011 0000 0011的符号位是0,则表示正数,原反补码都相同,转化成十进制就是3

本文共计604个文字,预计阅读时间需要3分钟。

原码、反码、补码之间有何区别?

原文链接:https://blog.csdn.net/LCW0102/article/details/120258453

在机器中,数字都用二进制存储,符号数字有原码、反码和补码三种表示形式。这三种表示中,最高位都代表符号位。

原文链接:blog.csdn.net/LCW0102/article/details/120258453

数字在机器中都用二进制来进行存储,有符号数则有原码、反码和补码三种表示方式
这三种表示方式里,最高位都代表的是符号位,1代表负数,0代表正数

1.原码

一个数的原码就是该数直接转化成二进制得到的数字,第一位是符号位

原码、反码、补码之间有何区别?

+8的原码:0000 1000 -8的原码:1000 1000 2.反码

正数的反码是自己本身

+8的原码:0000 1000 +8的反码:0000 1000

负数反码就是原码除了符号位不动,其他所有位按位取反

-8的原码:1000 1000 -8的反码:1111 0111 3.补码

正数的补码是自己本身

+8的原码:0000 1000 +8的反码:0000 1000 +8的补码:0000 1000

负数的补码是反码加一得到的(运算时包括符号位)

-8的原码:1000 1000 -8的反码:1111 0111 -8的补码:1111 1000 小结:

正数的原反补码都是相等的,负数的原反补码是相互转换得到的(负数的补码 = 该数的反码 + 1)

4.补码存在的意义

在机器中,数值一律用补码来表示和存储。

使用补码的原因:

  1. 使用补码可以将符号位和数值域统一处理
  2. 两个数字之间进行加减法运算时是将数字拿到CPU中进行计算的,而CPU只有加法器,要将减法转换成加法,所以可以利用补码使加减法统一操作

举个例子:
计算 8 - 5
因为CPU只有加法器所以要将 8 - 5 转换成 8 + (- 5) 来计算

(+8) 8的原码:0000 1000 8的反码:0000 1000 8的补码:0000 1000 (-5) -5的原码:1000 0101 -5的反码:1111 1010 -5的补码:1111 1011 8 - 5 = 8+(-5)  0000 1000 +1111 1011 ----------------------------   0000 0011 0000 0011的符号位是0,则表示正数,原反补码都相同,转化成十进制就是3