Так что они говорят, что вам нужно объединить два, как это:
//for reference, this is 32 bits
12345678901234567890123456789012
000000000000000000000FirstValueA
000000000000000000000FirstValueB
То, что он говорит, - нам нужно объединить оба. Это говорит о том, что A - младший, а B - старший.
Давайте обратимся к Википедии для http://en.wikipedia.org/wiki/Least_significant_bit и увидим, что low 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 ** 32 и добавить его к правому значению. (кстати, это 64-битное поле)
давайте рассмотрим, почему младший бит находится справа, а старший - слева:
Двоичный код написан так же, как арабские цифры. Арабскими цифрами номер:
123456
означает сто двадцать три тысячи четыреста пятьдесят шесть. Сто тысяч - это самая значительная часть (учитывая, что мы сократили бы ее до «чуть более ста тысяч долларов» вместо «намного более 6 долларов»), а шесть - это та часть, которую мы наиболее свободно отбрасываем. Таким образом, мы могли бы сказать, что число было:
123 - это значение, которое содержит биты старшего разряда, а 456 - это значение, которое содержит биты младшего разряда. Здесь мы умножим на 10 ^ 3, чтобы сложить их вместе (это математический факт, а не предположение, поэтому поверьте мне), потому что это будет выглядеть так:
123
456
и так же работает для двоичного файла:
//for reference, this is 32 bits
12345678901234567890123456789012
000000000000000000000FirstValueB
000000000000000000000FirstValueA
ТЛ; др:
Умножьте B на 2 ^ 32 и добавьте к A