如何通过单个操作将一个字节的最后3位转移至另一个字节?
位运算实现字节位替换需求
问题描述
假设存在以下字节:
byte byteOne = 0010 1011; byte byteTwo = 0110 0000;需要将byteOne的最后3位(即011)转移到byteTwo的最后3位,替换byteTwo原本的000。要求通过单个操作实现,且字节的值可能是动态的。
解决方案
直接使用组合位运算即可完成,代码如下:
byteTwo = (byteTwo & 0xF8) | (byteOne & 0x07);
操作原理
byteTwo & 0xF8:0xF8的二进制为1111 1000,与byteTwo进行按位与操作后,会将byteTwo的最后3位清零,同时保留其高5位的原始值。byteOne & 0x07:0x07的二进制为0000 0111,与byteOne进行按位与操作后,仅保留byteOne的最后3位,其余位全部清零。- 最终将两个结果做按位或操作,就能把byteOne的最后3位精准替换到byteTwo的最后3位位置上,整个过程是单个组合操作,完全适配动态变化的字节值。
内容的提问来源于stack exchange,提问作者IamVariable
相关产品推荐
相关产品推荐

