1 描述
给定一个 16 位的无符号整数,将其高 8 位与低 8 位进行交换,求出交换后的值,如:
10 的二进制表示:
00000000 00001010
将其高8位与低8位进行交换,得到一个新的二进制数:
00001010 00000000
其十进制为2560
从上面移位操作我们可以知道,只要将无符号数 a>>8 即可得到其高 8 位移到低 8 位,高位补 0;将 a<<8 即可将 低 8 位移到高 8 位,低 8 位补 0,然后将 a>>8 和 a<<8 进行或操作既可求得交换后的结果。
unsigned short a = 2560;
a
a = (a >> 8) | (a << 8);
2 实现
在java 中 位运算都会转成int 进行,所以高低位转换一般适用于int 或者long 类型, 其他的像byte、short、char 等都会转 int。
public static int higt_to_low(int a) {
return a>>16 | a<<16;
}
3 总结
通过左移右移的方式进行高低位转换。