gpt4 book ai didi

c - 设置 size_t 的最后 3 位

转载 作者:行者123 更新时间:2023-11-30 19:26:05 25 4
gpt4 key购买 nike

假设我有两个 size_t 类型的变量

size_t number;
size_t realNumber = (any value here);

我想为此枚举设置至少 3 个有效位

typedef enum three {
lastThree = 0b001,
} three;

我一直在这样做,但似乎不起作用

number = realNumber | lastThree;

有人可以帮助我吗?我需要该数字是 realNumber,最后 3 位有效数字是 lastThree 枚举。

最佳答案

您需要首先清除最后三位的任何残差。

size_t number;
const size_t last3bitClearFlag = ~(size_t)0b111;
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
size_t realNumber = (any value here);
number = (realNumber & last3bitClearFlag) | lastThree;
// ^ ^^^^^^^^^^^^^^^^^^^^

揭秘last3bitClearFlag(来自评论)

 ([..] for skipping long series of same bits)
0b111 is 0[..]0111
~0b111 is 1[..]1000 (flipped)
Number & (~0b111) = all bits preserved except last 3 are replaced with zeroes

关于c - 设置 size_t 的最后 3 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57950270/

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