原码、反码、补码

本文介绍了计算机中数据存储的原码、反码和补码概念。原码直接表示数值,正数不变,负数会有计算错误。反码解决了负数计算的部分问题,但引入了+0和-0。补码通过将负数的反码加1,确保了运算的正确性,包括跨零运算,并规定了一个特殊值表示-128。在Java中,超出类型范围的运算会产生溢出。

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

原码、反码、补码

背景

在计算机中以二进制对数据进行存储和计算,且是以补码的形式进行,那么原码、反码、补码三者的关系是什么呢?
计算机存储数据时以特定的空间进行存储,如:int占有4字节的空间,byte:1字节;那么因为空间是有限的,则会发生溢出和截断

 1111 1111
+0000 0001
——————————
10000 0000
(只取后八位)

原码

原码即二进制的原始形式,如
byte a = 4;
// a 所对应的原码为 0000 0100

优点:处理正数没问题
缺点:处理负数会出现问题,不能计算负数
符号位:最高位为符号位,0表示正数,1表示负数
因此:正数的补码、反码和原码相同,不变;因为正数用原码处理不会出现问题
但处理负数时却会发生问题:
当以原码计算 -3 + 1

 1000 0011
+0000 0001
—————————— 
 1000 0100

实际结果应该是 -2;但 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值