关于原码、反码和补码的介绍

本文详细介绍了原码、反码和补码的概念,并提供了两种找到负数补码及其对应负数的方法。通过示例,解释了如何通过补码判断其代表的负数以及如何计算负数的补码。
摘要由CSDN通过智能技术生成

原码、反码和补码的概念

参考详解原码、反码以及补码

找出负数的补码、以及负数的补码表示的负数的两种方法

数的补码的常见问题是找一个数的补码,以及根据补码找出它表示的数。

由于正数的补码和原码、反码都是一样的,在十进制和二进制之间转换就可以解决上述两个问题。

难点在负数上面。一个负数的补码是什么,以及一个表示负数的补码到底表示的是哪个负数。

还好,有两种方法可以同时解决这两个问题。

为了演示这两种方法,我们先给出用4个比特进行补码编码的样本:

无符号二级制有符号
701117
601106
501015
401004
300113
200102
100011
000000
151111-1
141110-2
131101-3
121100-4
111011-5
101010-6
91001-7
81000-8

方法1.

找出负数的补码

先找出作为它相反数的正数的补码,得到正数补码后,从低位向高位搜寻第一个1,第一个1和前面的低位比特(都是0)不变,而1后面的所有更高位比特取反(0变成1,1变成0),就得到原负数的补码了。比如,找-4的补码,先找4的补码,为0100,从低位向高位找1,为100,不变,后面的更高位取反,得到1100,它就是-4的补码。

3210
4的补码0100
取反不变不变不变
-4的补码1100

根据补码确定它表示哪个负数

由负数的补码判定它表示哪个负数的过程和上述过程类似,从低位向高位搜寻第一个1,第一个1和前面的低位比特(都是0)不变,而1后面的高位比特取反(0变成1,1变成0),会得到一个正数的补码。那么原先的补码表示的负数就是这个正数的相反数。比如,补码为1100,显然最高位为1,是负数的补码,从低位向高位找1,为100,不变,后面的更高位取反,得到0100,是4的补码,于是1100就是-4的补码。

3210
负数的补码1100
取反不变不变不变
为4的补码,说明1100为-4的补码0100

方法2.

找出负数的补码

先找出作为它相反数的正数的补码,得到正数补码后,对他进行取反,得到的二进制数再加1,即为该负数的补码。比如,找-4的补码,先找4的补码,为0100,取反,得到1011,再加1,得到1100,即为-4的补码。

3210
4的补码0100
取反取反取反取反
取反结果1011
加10001
-4的补码1100

根据补码确定它表示哪个负数

由负数的补码判定它表示哪个负数的过程与上述过程类似,把表示负数的补码取反,加1,得到正数的补码,那么原先的补码表示的负数就是这个正数的相反数。

3210
补码1100
取反取反取反取反
取反结果0011
加10001
为4的补码,说明1100为-4的补码0100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值