【发布时间】:2017-08-15 14:13:52
【问题描述】:
我有 int 136970250 (1000 0010 1010 0000 0000 0000 1010) -> 我需要删除所有奇数位(1、3、5、7...)
1000 0010 1010 0000 0000 0000 1010 -> 10 0111 0000 0011 (9987) - 因为这些位没有信息。
怎么做?
【问题讨论】:
-
显示您的尝试以及您的问题到底在哪里
-
应该是 & 与所有偶数位
-
所以不仅屏蔽了位,实际上还缩短了位数?您要解决的实际问题是什么?为什么要这样做(实际上是删除位,移动它们以适应较小的数据类型)?用例是什么?
-
为什么不为 每个字节 创建一个
0xAA掩码(例如,0xAAAAAAAA表示 32 位数字),然后与您的 AND原号码? (或者如果它实际上是您想要的 偶数 位,则为每个字节使用0x55) -
这怎么“太宽泛”了?这是一个非常具体的问题。
标签: c bit-manipulation bit