原码反码补码计算以及按位取反操作

原码反码补码

计算

正数的原码,反码,补码相同如+5,原码可表示为00000101

负数的原码由正数原码得来,将最高位由0变为1就为负数的原码

如-5的原码可以表示为10000101,反码是最高位不变,其余取反则-5

的反码0为11111010,补码=反码+1即11111011

计算机只有加法器,所以在计算其他运算是都是将其转换为加法运算

比如拿16-22为例,转换为16+(-22)计算机计算时借助补码运算,过程如下:

16转二进制  >> 00010000
-22转二进制 >> 10010110
16的补码  >> 00010000
-22的反码 >> 11101001
-22的补码 >> 11101010
16+(-22)>> 11111010 # 也就是-6的补码
-6的反码  >> 11111001
-6的原码  >> 10000110 = -6

按位取反

拿5举例:

5转二进制 >> 00000101
按位取反  >> 11111010 # 得到补码的一种形式
最高位是1,说明是负数,那么就满足补码=反码+1
那得到反码 >> 11111001
转换为原码 >> 10000110
二进制转16进制 >> -6
所以在Python中,~5=-6

二进制计算加减法则

加法:0+0=0
     0+1=1
     1+1=0 # 进位写0
减法:0-0=0
     0-1=1 # 借位写1
     1-0=0

大概就是这些吧(自己在借鉴中学习)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值