我们说byte1 = 00001111
和byte2 = 11110000
。我如何取byte1
的后半部分,然后取byte2
的前半部分并将它们组合起来得到一个值为11111111
的字节。我已经做了一些研究,但我似乎无法绕过位掩码并转移。
答案 0 :(得分:0)
如果确保“备用”位全为零,则可以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
然后
Warning: a promise was rejected with a non-error: [object String]
at RejectWithAnError (https://fiddle.jshell.net/_display/:51:19)
at https://fiddle.jshell.net/_display/:57:14
From previous event:
at StartTheProgram (https://fiddle.jshell.net/_display/:56:6)
at window.onload (https://fiddle.jshell.net/_display/:67:1)
bluebird.js:1444 Unhandled rejection an error occurred
不需要位移,因为要保留的位已经在正确的位位置。