java语言基础(6)——原码反码补码以及二进制的负数运算

在计算机内部,对数据运算时,都是操作的数据的补码。但补码又跟原码反码有着密切的关系,所以我们就有必要对原码反码补码进行一次清晰的梳理。


原码:

就是二进制定点表示法,即最高位为符号位,0表示正,1表示负,其余位表示数值的大小。


反码:

正数的反码与其原码相同;负数的反码对其原码逐位取反,但符号位除外。


补码:

正数的补码与其原码相同,负数的补码是在其反码的末位加1。


为什么要用补码运算:

——摘自百度百科《补码》

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

1、一个负整数(或原码)与其补数(或补码)相加,和为模。
2、对一个整数的补码再求补码,等于该整数自身。
3、补码的正零与负零表示方法相同。
——摘自百度百科《补码》

关于为何使用补码的具体细节,请移步百度百科《补码》


二进制数值运算实例:

加法很容易理解,因为正数的原反补码都相同此处省略。而减法则涉及到负数,此处记录两个实例,给自己以后提个醒。

3-2=1

3-2等价于 3+(-2)

我们先得到对应数字的补码

3(原码) 00000011

3(反码) 00000011

3(补码) 00000011

-2(原码) 10000010

-2(反码) 11111101

-2(补码) 11111110

运算结果为 00000001

此结果为数值的补码表示,最高位为0表示此数为正数,

正数的原反补码都相同,所以结果就是为1

 

3-4=-1

3-4等价于3+(-4)

3(原码) 00000011

3(反码) 00000011

3(补码) 00000011

-4(原码) 10000100

-4(反码) 11111011

-4(补码) 11111100

运算结果为 11111111

此结果是数值的补码,最高位为1表示此数是负数,

转换为原码则为 10000001,结果为-1

在运算的过程中,补码的符号位和数值位统一参与运算。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梧桐深院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值