让我们这么说byte1 = 00001111
,和byte2 = 11110000
。我将如何取后半部分byte1
,然后取前半部分byte2
并将它们组合起来以获得一个字节的值11111111
。我已经做了一些研究,但我似乎无法将我的头包裹在位掩码和移位上。
问问题
836 次
1 回答
1
如果保证“备用”位全为零,则可以OR
将两个字节放在一起,因为A or 0 == A
(见下文)
如果不能保证,则需要(byte1 AND 0x0f) OR (byte2 AND 0xf0)
.
操作将AND
不需要的位设置为零(因为A AND 0 == 0
),然后OR
操作组合字节,如上所述。
ABCDXXXX XXXXEFGH
AND 11110000 (0xf0) AND 00001111 (0x0f)
-------- --------
= ABCD0000 = 0000EFGH
接着
ABCD0000
OR 0000EFGH
--------
= ABCDEFGH
不需要移位,因为您要保留的位已经在正确的位位置。
于 2016-02-04T17:17:17.197 回答