我有一个十六进制数字0x8F(二进制为10001111)。我想右移该值,所以新的将是0xC7(11000111)。我尝试了:

unsigned char x = 0x8F;
x=x>>1;

但是我得到的不是0xC7,而是0x47?有关如何执行此操作的任何想法?

最佳答案

右移无符号数量将使新的零变为,而不是1。

注意,右移不是右旋转。为此,您需要

x = (x >> 1) | (x << 7)

关于c++ - 如何在C++中右移位?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28124336/

10-11 18:11