使用二进制编程心得
原码、反码、补码、左移、右移、&、|
【<<】通过位运算实现取余效果
为变量定一个二进制长度,例如定二进制长度而 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;
持续更新。。。

浙公网安备 33010602011771号