原码、反码、补码

引言

计算机内部的硬件电路怎么实现加法,减法,乘法,除法?
加法:全加器的串接。
减法:利用数学规律变成加法。
乘法:利用数学规律变成加法。
除法:利用数学规律变成乘法,再把乘法变成加法。

两种编码规则

科学家根据正数和负数两种可能性:
分别涉及了两种编码解码规则:有符号数,无符号数。

无符号数编码规则

在8比特位的二进制数中,如果要表示一个正数

100(10)

01100100 (2)

无符号数不能表示负数

有符号数编码规则
  1. 原码:最高位为符号位,其余各位为数值本身的绝对值
  2. 反码:
    正数:反码与原码相同
    负数:符号位为1,其余位对原码取反
  3. 补码:
    正数:补码与原码相同
    负数:符号位为1,其余位对原码取反后+1

1的原码:0 0 0 0 0 0 0 1
1的反码:0 0 0 0 0 0 0 1
1的补码:0 0 0 0 0 0 0 1

-1的原码:1 0 0 0 0 0 0 1
-1的反码:1 1 1 1 1 1 1 0
-1的补码:1 1 1 1 1 1 1 1

0在计算机中分+0与-0,它们的原码,补码,反码如下

+0的原码:0 0 0 0 0 0 0 0
+0的反码:0 0 0 0 0 0 0 0
+0的补码:0 0 0 0 0 0 0 0

-0的原码:1 0 0 0 0 0 0 0
-0的反码:1 1 1 1 1 1 1 1
-0的补码:0 0 0 0 0 0 0 0

补码形式相加计算

**0 0 0 0 0 1 0 1  |+5的补码****1 1 1 1  1 1 0 1  | -3的补码****---------------------****1 0 0 0 0 0 0 1 0|+2**

意义

补码在计算机中表示数值型数据的优势,和原码、反码等相比可表现在如下方面 :

  1. 解决了符号的表示的问题;
  2. 可以将减法运算转化为补码的加法运算来实现,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计;
  3. 在计算机中,利用电子器件的特点实现补码和真值、原码之间的相互转换,非常容易;
  4. 补码表示统一了符号位和数值位,使得符号位可以和数值位一起直接参与运算,这也为后面设计乘法器除法器等运算器件提供了极大的方便。总之,补码概念的引入和当时运算器设计的背景不无关系,从设计者角度,既要考虑表示的数的类型(小数、整数、实数和复数)、数值范围和精确度,又要考虑数据存储和处理所需要的硬件代价。因此,使用补码来表示机器数并得到广泛的应用,也就不难理解了。
原码反码补码计算口诀是: 1. 原码:符号位加上真值的绝对值。 2. 反码:将原码中的符号位保持不变,其余位取反。 3. 补码反码加1。 例如,对于一个8位二进制数,如果要计算其反码,可以按照以下步骤进行: 1. 将符号位保持不变。 2. 将其余位取反。 对于补码的计算,可以按照以下步骤进行: 1. 先计算其反码。 2. 在反码的基础上加1。 这样,就可以得到原码反码补码的计算结果。 #### 引用[.reference_title] - *1* [原码, 反码, 补码的基础概念计算方法](https://blog.csdn.net/Chinajsczlymyc/article/details/126910306)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [(转)java 原码反码补码计算 以及 取反运算,原码反码补码运算公式](https://blog.csdn.net/PacosonSWJTU/article/details/128604733)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [原码,补码,反码概念计算方法详解](https://blog.csdn.net/qq_39541098/article/details/122729622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值