つまり、彼らが言っているのは、次のように2つを混ぜ合わせる必要があるということです。
//for reference, this is 32 bits
12345678901234567890123456789012
000000000000000000000FirstValueA
000000000000000000000FirstValueB
それが言っているのは、2つを組み合わせる必要があるということです。Aが低次、Bが高次と書いてあります。
http://en.wikipedia.org/wiki/Least_significant_bitlow order is on the --> right
についてウィキペディアを参照して、、、およびを見てみましょうhigh order is on the <-- left
。
low order -> right
high order <- left
A -> right
B <- left
したがって、最終的には(前の例)になります
//for reference, this is 32 bits
12345678901234567890123456789012
000000000000000000000FirstValueA
000000000000000000000FirstValueB
になります
//for reference, this is 32 bits
12345678901234567890123456789012
000000000000000000000FirstValueB000000000000000000000FirstValueA
値が次のようになっている場合、これは機能しません。
//for reference, this is 32 bits
12345678901234567890123456789012
1001101100110100101011010001010100101000010110000101010011101010
//the above string of 1's and 0's is more correct for the example
与えられるのは、2つのバイナリ文字列ではなく、2つの整数です。したがって、左側の値に2 ** 32を掛けて、右側の値に追加する必要があります。(ちなみに、これは64ビットフィールドです)
なぜ下位ビットが右側にあり、上位ビットが左側にあるのかを調べてみましょう。
2進数は、アラビア数字と同じように記述されます。アラビア数字では、数字は次のとおりです。
123456
百二十三千、四百五十六を意味します。10万が最も重要な部分であり(これを「6ドルをはるかに超える」ではなく「10万ドルをわずかに超える」に短縮するため)、6は最も自由にドロップする部分です。したがって、その数は次のようになります。
123は上位ビットを含む値であり、456は下位ビットを含む値です。ここでは、10 ^ 3を掛けて、それらを足し合わせます(これは数学的な事実であり、推測ではないので、これを信頼してください)。これは次のようになります。
123
456
したがって、同じことがバイナリでも機能します。
//for reference, this is 32 bits
12345678901234567890123456789012
000000000000000000000FirstValueB
000000000000000000000FirstValueA
tl; dr:
Bに2^32を掛けて、Aに加算します