4字节数组 移位

Python020

4字节数组 移位,第1张

应该等同于或者可以转换成32bit的位翻转。

unsigned int reverseBits(unsigned int v){

unsigned int r = v

int s = sizeof(v) * 8 - 1

for (v >>= 1vv >>= 1) {

r <<= 1

r |= v &1

s--

}

r <<= s

return r

}

int main()

{

unsigned int i=0xf000f000

printf("%08X =>%08X",i,reverseBits(i))

return 0

}

==========

F000F000 =>000F000F

与C语言的是一样的功能。

15是F的意思。就是4位bit, r是红色 , r&15 相当于r&0x0F, 也就是,,过滤掉高位0XF0位置上的内容,只保留低4bit

r>>4是向右移位4bit,通常是指将高位4位移动低位4位上。

*256相当于<<8,就是左移8位的意思。

用这些办法是为了提高效率。或者是取其中一段的bit用来计算。

x>>1是对位来的,对照储存来看

r本来是8,二进制下就是

0000 0000 0000 1000(二字节)

进行移位操作就是把所有位置的数往右边移动,右边是数字1,所以是移动一位,也就是

0000 0000 0000 0100 (最前面的补充0)

相当于除以2。

题目应该是这样的吧:

int x=8

printf("%d\n",x>>1);

结果是

4