位运算场景六高低位交换

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 总结

通过左移右移的方式进行高低位转换。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值