gpt4 book ai didi

c++ - 连接按位运算的正确方法?

转载 作者:太空狗 更新时间:2023-10-29 23:43:16 24 4
gpt4 key购买 nike

我需要连接一些按位运算,但当前输出似乎是错误的。拆分操作类似于这样:

unsigned char a = 0x12
unsigned char x = 0x00;
x = a << 4;
x = x >> 4;

预期结果 x = 0x02;当前结果 x = 0x02;

如果我尝试连接操作,结果是不正确的:

unsigned char a = 0x12
unsigned char x = 0x00;
x = (a << 4) >> 4;

预期结果 x = 0x02;当前结果 x = 0x12;

提前感谢您的任何建议。

最佳答案

问题是(a << 4)被转换为 int (通过 Integral promotion ),所以 (0x12 << 4) >> 4本质上是 0x12

您要做的是转换回 (a << 4)unsigned char通过使用 static_cast

最终代码:

   unsigned char a = 0x12;
unsigned char x = 0x00;
x = static_cast<unsigned char>(a << 4) >> 4;

关于c++ - 连接按位运算的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55739802/

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