У вас есть дополнительный ноль в ваших двоичных числах (у вас есть 9 цифр в каждом). Я предполагаю, что это просто опечатка.
Вы уверены, что делаете заказ правильно? Двоичный код традиционно пишется справа налево, а не слева направо, как большинство других систем нумерации. Если двоичное число, которое вы показали, отформатировано в свойстве (это означает, что 10000000
действительно число 128
, а не число 1
), тогда ваш первый фрагмент кода не должен работать, а второй должен. Если вы пишете это задом наперед (то есть 10000000
означает 1
, а не 128
), вам даже не нужно сдвигать биты. Просто И это с 1 (theByte & 1
).
На самом деле, независимо от подхода побитовое И (оператор &
) кажется более подходящим. Учитывая, что ваша первая функция работает, а вторая - нет, я предполагаю, что вы просто записали число в обратном направлении, и вам нужно AND с 1, как описано выше.