gpt4 book ai didi

c - 如何有效地设置一个字节的最后三位?

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:55 25 4
gpt4 key购买 nike

我想将一个字节的最后三位设置为特定值。达成此目标的最佳方式是什么?

我至少可以想到两个解决方案……假设我有以下字节:1101 0110 并想将最后三位设置为 011。

解决方案一:

 1101 0110
&1111 1000 //and with mask to clear last three bits
|0000 0011 //add the target bits

解决方案 2:

 1101 0110 >> 3 //shift right to remove last three
0001 1010 << 3 //shift left to clear last three
|0000 0011 //add target bits

有没有更好/更短/更高效的方法?

最佳答案

最好的办法就是说

b = (b & ~7u) | 3

因为3=0...0117u=0..111二进制形式,以及 7u 的补码是~7u=11...1000 ,因此该操作会执行您想要的操作。它首先清除最后三位(通过执行 b & ~7u ),然后设置第一位和第二位(通过与 3 执行按位或)。

关于c - 如何有效地设置一个字节的最后三位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36422143/

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