首页 > 解决方案 > 我怎样才能位移一个 0 位?

问题描述

我正在尝试按顺序像这样进行位移。是否有逻辑操作可以帮助我做到这一点?

0111 1111
1011 1111
1101 1111
1110 1111
1111 0111
1111 1011
1111 1101
1111 1110

对于十六进制,它将是

0x7F
0xBF 
0xDF 
0xEF 
0xF7 
0xFB 
0xFD 
0xFE

标签: binaryhexbit-manipulationbitwise-operators

解决方案


试试这个 8 位数字(示例适用于 Java,也可能对 С 有帮助)

value = ((value >> 1) & 0x7F) | 0x80

而这个用于零的反向传播

value = ((value << 1) | 1) & 0xFF

推荐阅读