相关疑难解决方法(0)

如何使用按位运算补充最右边的位,保持前导零位为零?

如何补充具有前导零位的数值,以便前导零位保持为零,剩余的1位和0位将被补充?我想仅通过按位运算来执行此操作,而不必检查该值以确定该值中有多少前导零位.我可以使用哪些按位运算来仅隔离包含一个位或位打开的值的最低有效部分,并仅补充值的那部分,使前导零位保持不变.

例如,给出一个数字,比如9.

9将以无符号32位二进制形式表示为00 ... 01001.

为简单起见,请仅考虑8位形式.9 = 00001001

现在当我补充这个数字时,我会得到11110110.

但这不是我想要的.

我希望原始表示的前导0保持不变,并补充其余部分.

即对于9 = 00001001,前4个零应该保持为零,下一部分应该被称赞.所以我将有00000110即6.

我知道一个更长的方法:

  1. 查找给定数字的位数 b
  2. 找到给定数字的补充说 x
  3. 提取最后b

要么

  1. 减去(0xFF<<b)x

c bit-manipulation bit

3
推荐指数
1
解决办法
2119
查看次数

标签 统计

bit ×1

bit-manipulation ×1

c ×1