c语言 小数 求补码,C语言中的原码,反码,补码

本文详细解析了C语言中原码、反码和补码的概念及其转换方法。通过实例说明了正负数的原码、反码及补码的表示方式,并介绍了补码在计算机运算中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实吧,在我们学习C语言中会遇到好多令人头疼的问题,比如说,原码,反码,补码。看见很简单的三个词,可是真正理解起来会非常的麻烦,那么我在这里就跟大家一起来重新学习一下原码,反码,补码。

首先让我们弄明白,什么是原码,什么是反码,什么是补码,要想学会这个,我们首先要弄明白他们的定义。

所谓的原码,就是指有符号的整数的二进制。原码本身简单一易懂在这里就不做过多的解释

例如:

00000001=1

10000001=-1

反码,就是把原码的符号位不变其余的位进行取反。最高位还是一样,当为1的时候是正,当为0的时候是负。对于正数来说,正数的反码跟原码是相同的,对于负数来说,符号位是保持不变其余位置进行取反操作,

例如:

正数100的原码为:01100100 则100的反码也为:01100100

负数100的原码为:11100100 则它的反码为:10011011

此时需要注意:0也有两种表现形式。

说起来反码理解相对而言还算简单,那么接下来让我们继续学习补码

补码,对于正数来说,补码跟原码是相同的,对于负数而言,符号位还是保持不变,其数值位x的据对峙取反后再最低位+1。在计算机中的储存都是用补码来处理的

例如:

+9的原码是:00001001 +9的反码为00001001 +9的补码为00001001

-9的原码是:10001001 -9的反码为11110110 -9的补码为11110111

注意:在补码中0有唯一的编码。

补码的绝对值之为真值;

以上呢,为原码、反码、补码的简单介绍,综上所述我们对于原码、反码、补码的理解,我认为是相当简单了,那接下来我们看一下他们在实际中的应用,大部分为举例分析

原码的符号位不能直接参与运算,必须和其他位分开。在原码的具体定义中还分为小数和正数

1.小数原码的定义

+0.1011的原码就是0.1011    -0.1011的原码就是 1.1011

2.正数原码的定义(略 前面提起过)

注意,在小数原码的定义时候,代码中的小数点并不会出现在机器内部

反码

在上面提到的数0的反码有两种形式

如下:

+0的反码为:00000000

-0的反码为:11111111

八位二进制反码的表示范围为-128~+127

补码

在补码中,我们会提到模,那么什么叫做模呢?

模的定义:把一个计量单位称之为模或者模数。例如,时钟是以12进制计数循环的,即以12为模。利用模的概念可以把计算的减法变为加法。同理,计算机的运算部件与寄存器都有一定字长的限制(假设字长为8),因此它的运算也是一种模运算。当计数器计满8位也就是256个数后会产生溢出,又从头开始计数。产生溢出的量就是计数器的模,显然,8位二进制数,它的模数为2^8=256。在计算中,两个互补的数称为“补码”

补码在微型机中是一种重要的编码形式,请注意:

1.采用补码后,可以方便的将减法运算转化成加法运算,运算过程得到简化。

2.与原码、反码不同,数值0的补码只有一个,即000000000B

3.若字长为8位,则不吗所表示的范围为-128~127;进行补码运算时,应注意所得到结果不应超过补码所表示数的范围

下面我们进行一个简单的转化案例:

已知原码,求反码跟补码,原码为10110110B,求出反码和补码

有已知可以知道10110110B为一个负数

则反码为11001001B

它的补码就为11001010B(从末端+1的到补码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值