gpt4 book ai didi

c - 如何删除 C 中的所有赔率位?

转载 作者:行者123 更新时间:2023-12-01 08:23:30 24 4
gpt4 key购买 nike

我有 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) - 因为这些位没有信息。

怎么做?

最佳答案

  1. 新建一个整数,初始化为0

  2. 使用 for 循环从 0 迭代到原始整数中位数的一半(不包括在内)

  3. 对于循环中的每次运行,将原始整数与 (1 << (i * 2)) 相加。如果它不为零,则将新整数与 (1 << i)

  4. 结局

编辑:再次查看示例,您实际上 想要的是删除所有 偶数 位,而不是奇数位。因此,只需将步骤 3 中的原始整数与 (1 << (i * 2 + 1)) 相加即可。

编辑 2:从您的示例看来,您正在使用 32 位整数,但只是为了涵盖所有基数,我要补充一点,如果您的整数实际上是 64 位,您应该将 1 替换为第 3 步中的 1ULL

关于c - 如何删除 C 中的所有赔率位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45694690/

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