gpt4 book ai didi

c++ - 合并位移

转载 作者:太空狗 更新时间:2023-10-29 23:34:14 25 4
gpt4 key购买 nike

例如,我正在尝试从一个字节中提取一个 3 位值:

unsigned char r = ((253 << 5) >> 5);

结果值应该是 5 但为什么返回 253?

最佳答案

两种可能性:

  • 你的表达式被评估为一个整数,并最终被转换为一个单字节值。
  • 您的编译器优化了移位操作。

请注意,您的结果应该是 5,而不是 3。您想要的是:

const unsigned char c = 253 & 0x07 ; // (00000111)

你的位掩码是:

253 | 1 1 1 1 1 1 0 1 | F D
7 | 0 0 0 0 0 1 1 1 | 0 7
+++++++++++++++++++++++++++
5 | 0 0 0 0 0 1 0 1 | 0 5

关于c++ - 合并位移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992844/

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