我有一个十六进制数字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/