gpt4 book ai didi

C# 如何删除整数中的第 n 位?

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:38 25 4
gpt4 key购买 nike

我正在尝试找到一种从整数中删除一位的方法。该解决方案不得使用字符串操作。例如,我有数字 27,二进制表示为 11011。我想删除第三位,这样我就剩下 1011。或者我们有 182 (10110110),删除第 6 位,结果是 1110110(即 118)。我正在尝试考虑算法如何做到这一点,但到目前为止运气不佳,而且我无法在互联网上找到有用的信息。

我知道如何使用按位运算符以及如何提取或操作整数中的位(更改值、交换值等),但我不知道如何“删除”某个位。

我不是在寻找代码,只是在寻找操作逻辑。如果有人能帮助我,那就太棒了!

问候,托尼

最佳答案

没问题,只需将数字分解为“上半部分”和“下半部分”,然后将它们放在一起,而无需现在消失的中间位。

未测试:

uint upper = x & 0xFFFFFFF0;
uint lower = x & 7;
return (upper >> 1) | lower;

更一般:(也未测试)

uint upper = x & (0xFFFFFFFE << n);
uint lower = x & ((1u << n) - 1);
return (upper >> 1) | lower;

关于C# 如何删除整数中的第 n 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com