Python学习心得2020.9.15
二进制:
位:数据存储最小单元,一字节(byte)=8位(bit)。
无符号数:没有符号位,所有二进制均表示数值。
有符号数:最高位表示符号,0为正,1为负。
原码、补码和反码(有符号数)
正数:原码、反码、补码都一样
负数:反码–符号位不变,其余位取反;补码–反码+1
计算机运算的时候,都是以补码的方式来运算的,因为二进制数在内存中是以补码的形式存放的;
按位与 a&b 1&1->1
按位或 a|b 1|1/1|0/0|1 ->1
按位异或 a^b 10/01->1
按位取反 ~a 1=>0/0->1 正数的取反等于正数加1取负,例如11的取反等于-12;负数的取反等于负数加1取正,例如-12的取反等于11
左移 a< 带符号右移 a>>b 舍弃二进制后面b位,正数高位补0,负数高位补1,结果值为a/2^b(取整)
无符号右移a>>>b 无论是正数还是负数,高位通通补0
关于位运算反码补码的总结:正的反码和补码都是原码;负数的补码是反码加1,反码是原码符号位不变,其他位取反
为什么计算机存储数据的时候存补码?:因为计算机中只有加法器,只能进行加操作。存原码对负数进行加操作的时候有问题
计算存数字存补码,计算的时候也是补码,最后结果看的时候看原码
位运算符:&(按位与),|(按位或), ^(异或), ~(取反), >>(右移), <<(左移)