1、前置条件
假如 int 是1个字节,最大值为0b11111111(十进制 255)
2、问题描述、原因及解决方案
问题描述:
如果一个数 0b10111110(190)
左移1位(高位截断 低位补0) 190 <<1 = 380(python操作) 其实这个时候 已经溢出了 最大值255原因:
从二进制看 预期是 0b01111100(124) 实际 是 0b1,01111100(380) ,多了一个字节, 高位有一个1
解决方案:
去掉高位的1,& 11111111(255)即可
3、Python操作
>>> 190 <<1
380
>>> 380 &255
124