【C语言】原码、反码和补码之间的区别及转换计算

本文介绍了C语言中数值的原码表示法,强调计算机用补码存储和运算数据,但理解时需考虑原码。原码首位表示符号,其余位代表绝对值。8位二进制原码范围为[-127, 127]。补码不仅解决了0的符号问题,还能表示额外的最小负值,使得8位二进制的补码范围扩大到[-128, 127]。这使得32位int类型在补码下能表示更广泛的数值范围。" 112885033,10293168,R语言plot函数详解:绘制与定制图形,"['R语言', '图形绘制']
摘要由CSDN通过智能技术生成

总结:

在这里插入图片描述
【注】计算机虽然是用补码的形式来存储和运算数据的,但是在看结果时,要看其原码。

这里补充讲解一下原码:

原码

原码就是用左边第一位表示符号, 其余位表示绝对值. 符号位:正数为0,负数为1.比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]

[-127 , 127],
原码是人脑最容易理解和计算的表示方式.

如果数据为有符号的话,则0也会分为+0,其原码为[0000 0000]和-0,其原码为[1000 0000]。

但是-0没有实际意义,原码的-0二进制表示为1000 0000,。但是-1+(-127)用补码计算的话,得出的补码也为1000 0000,所以此补码的真值应为-128。
在这里插入图片描述
所以用补码表示数据范围时,原码真值的-0的二进制形式就成为了-128的补码二进制形式。所以用补码表示数时,其真值就会比原码多出一个最小负值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值