计算机中的原码,反码和补码问题

此文章参考链接入口
1、原码

纠正一点我长期以来的错误认知。

八位二进制数的范围为[-127,127],原因是最高位是符号位(0为)并不参与计算

[1111 1111 , 0111 1111]

2、反码

正数的反码是其本身,例如:01010111的反码为 01010111

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. 例如:11010111的反码是10101000

3、补码

正数的补码就是其本身,例如:01010111的补码为 01010111

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
例如:11010111的反码为 10101001

说完这样,再顺便记下减法的操作,在计算机中并不存在减法,当作减法时,我们把减数转换为补码再相加。举个栗子:
(1)8-5=[00001000]原码 +[1000 0101]原码 =[0000 1000]补码+[ 1111 1011 ]补码==[0000 0011]补码
在此计算出的结果我们需要对得出的八位二进制数取补码,那才是最终结果,3
(2)6-8=[0000 0110 ]补码+[1111 1000]补码=[1111 1110]原码=[1000 0010]原码
结果为(-2).

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值