【发布时间】:2019-05-10 15:54:34
【问题描述】:
我正在尝试找到一种从整数中删除位的方法。解决方案不得使用字符串操作。 例如,我有数字 27,即二进制 11011。 我想删除第三个位,所以它给我留下了 1011。 或者我们有 182(10110110),去掉第 6 位所以结果是 1110110(即 118)。我正在考虑算法如何做到这一点,但到目前为止没有运气,我在互联网上找不到有用的信息。
我知道如何使用位运算符以及如何提取或操作整数中的位(更改值、交换值等),但我不知道如何“删除”某个位。
我不是在找代码,只是在寻找操作的逻辑。如果有人可以帮助我,那就太棒了!
问候, 托尼
【问题讨论】:
-
你不能真正删除一点,你能做的就是把它变成 0。所以使用按位运算 01011 & 11011 = 01011 = 1011 = 00000000000000000000000000001011 (int32)。删除它的唯一方法是将它实际表示为一个字符串,然后任何转换回 int 只会使它再次具有 0。
-
@Mgetz 任务不是将某个位设置为零,而是将其完全删除。
标签: c# bit-manipulation