我有一个十六进制数 0x8F
(二进制为 10001111)。我想右移该值,因此新值将是 0xC7
(11000111)。我试过:
unsigned char x = 0x8F;
x=x>>1;
但我得到的不是 0xC7,而是 0x47?关于如何执行此操作的任何想法?
最佳答案
右移一个无符号数将产生新的零输入,而不是一个。
请注意,右移不是右旋转。为此,您需要
x = (x >> 1) | (x << 7)
关于c++ - 如何在 C++ 中右移位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28124336/