使用二进制编程心得

原码、反码、补码、左移、右移、&、|

【<<】通过位运算实现取余效果

为变量定一个二进制长度,例如定二进制长度而 4 位,则变量最大值:
~(-1L << 4) = 15
但是在代码中并没有一个数值类型能指定一个可变位数,仅有 int(32位)、long(64位)等,如果想要指定位数(及指定最大值),则需要实现超过最大值后自动从 0 开始,例如:

long number = 15;
number = (number + 1) & getMaxNum();    //number = 0

getMaxNum() = ~(-1L << 4)
p.s. 相对于取余(%),位运算速度更快

【<<】拼接成一个Long

符号位 空白位 appId deltaSeconds workId sequence
1bit 11bits 5bits 30bits 4bits 13bits

appId << (13 + 4 + 30) | deltaSeconds << (13 + 4) | workerId << 13 | sequence;

持续更新。。。

posted @ 2023-02-18 19:55  洗衣机o  阅读(44)  评论(0)    收藏  举报