2013-10-09 7 views
-1

Что означает «этот бит установлен», даже означает, и как определить, какие биты установлены, а какие нет.Как определить, какой бит установлен?

Пример: Если у меня есть двоичный код 0001 0010 = decimal 18 Как узнать, что установлены биты 1 и 4?

Разъяснение: в моей голове и не кодирования

+0

можно выполнить немного и операции с соответствующими силами 2. –

ответ

0

С вашим " в моей голове, никакого кодирования «разъяснения», this answer подводит итог довольно хорошо. Пока неясно, хотите ли вы узнать, какие биты заданы из двоичного числа или десятичного числа, я буду считать последнее, поскольку просмотр, если бит задан из двоичного числа, тривиален. Я хотел бы добавить несколько вещей, чтобы ответ Бориса:

  • Немного K из числа B устанавливается, если его значение равно 1, это означает, что вам нужно добавить мощности K от 2 до вашей суммы в порядке получить B. Имейте в виду, что в двоичной записи каждое положительное целое представляется как сумма степеней 2. Никакая степень 2 не может быть представлена ​​как сумма меньших степеней 2, что делает бинарное представление числа уникальным.

  • Вы можете сразу узнать, установлен ли первый бит, поскольку он определяет четность (0-четный, 1-нечетный).

  • Вы можете узнать наибольший бит бит, найдя максимальную мощность 2, которая меньше, чем число, которое вы анализируете. Никакие биты за пределами этого не будут установлены (если бы они были, они были бы больше, чем сила 2, которую вы нашли, тем самым лишив ее максимальной).

  • Отныне вы в основном делаете, как сказал вам Борис. Это линейная проверка на каждую силу двух.

Я думаю, что вы можете прочитать о this, чтобы иметь лучшее понимание того, что вы просите.

0

Я использую метод, основанный на вычитании чисел.

Вы знаете полномочия 2:

2^0 = 1 
2^1 = 2 
2^2 = 4 
2^3 = 8 
2^4 = 16 
2^5 = 32 
2^6 = 64 
2^7 = 128 

Затем возьмите любое количество вы хотите, и попытаться вычитать максимум от сил 2, но результат должен быть больше или равен 0.

Пример:

  1. Возьмите номер 18.
  2. Попробуйте вычесть 128: 18-128 = -110, это означает, что вы не можете вычесть 128, 7-й бит 0
  3. Попробуйте вычесть 64: 18-64 = -46, это означает, что вы cann't субстрат 64, 6-й бит равен 0
  4. Попробуйте вычесть 32: 18-32 = -14, это означает, что вы не можете вычесть 32, 5-й бит равен 0
  5. Попробуйте вычесть 16: 18-16 = 2, это означает, что вы CAN 16 вычитания, 4-й бит равен 1
  6. продолжить с остальными: 18-16 2
  7. Try вычитаем 8: 2-8 = -6, это означает, что вы Cann» t субстрат 8, 3-й бит 0
  8. Попытка вычесть 4: 2-4 = -2, это означает, что вы можите вычитаем 4, 2-й бит равен 0
  9. Попытка 2 вычесть: 2-2 = 0, это означает, что вы CAN 2 вычесть, 1-й бит равен 1
  10. остальная часть числа равно 0, то каждые следующие биты равны 0
Смежные вопросы