如何将两个字节中的两半组合起来得到一个字节

时间:2016-02-04 17:14:50

标签: byte bit byte-shifting

我们说byte1 = 00001111byte2 = 11110000。我如何取byte1的后半部分,然后取byte2的前半部分并将它们组合起来得到一个值为11111111的字节。我已经做了一些研究,但我似乎无法绕过位掩码并转移。

1 个答案:

答案 0 :(得分:0)

如果确保“备用”位全为零,则可以ORA 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

不需要位移,因为要保留的位已经在正确的位位置。