原码反码补码计算以及按位取反操作
原码反码补码
计算
正数的原码,反码,补码相同如+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
大概就是这些吧(自己在借鉴中学习)