Top.Mail.Ru
Уведомления
Очистить все

[Решено] Как проверить 1 бит в байте uint8_t?

(@dream-theater)
New member

Недавно программирую микроконтроллеры, да и вообще программирую, подскажите как можно проверить значение одного бита в переменной типа uint8_t?

Цитата
Создатель темы Размещено : 29.03.2023 19:50
(@eduard)
Level 4 Moderator

Наложить маску и проверить результат. Например:

A = 0х25, бинарно выглядит так - 0010 0101, нужно проверить третий бит.

Для этого делаем операцию "И" с числом у которого в третьем бите стоит "1", в нашем случае "0х08". Если результат равен 1, то там была 1:

if (A & 0x08) 
  // Здесь обработка если равно 1
else
  // Здесь обработка если равно 0
ОтветитьЦитата
Размещено : 30.03.2023 06:31
(@dream-theater)
New member

А почему именно 0x04?

ОтветитьЦитата
Создатель темы Размещено : 30.03.2023 11:08
Aveal
(@aveal)
Top level Admin

Там 0x08 должно быть, я обновлю.

0x08 в двоичном виде это 0b00001000 - все биты нулевые, кроме 3-го (нумерация битов с нуля). Поэтому операция (A & 0x08) даст в результате не ноль только в том случае, если в переменной A третий бит также равен 1.

ОтветитьЦитата
Размещено : 30.03.2023 12:01
(@eduard)
Level 4 Moderator

"А" неправильно написал, должно быть 0х25

Весовой код байта

8 4 2 1  8 4 2 1

0 0 1 0  0 1 0 1 = 0х25 &
0 0 0 0  0 1 0 0 = 0х04
------------------
0 0 0 0  0 1 0 0 = 0х04 -> отличается от нуля, значит бит установлен.

Нумерация битов

7 6 5 4  3 2 1 0

Мы имеем третий справа установленный бит, который имеет номер 2.

 

ОтветитьЦитата
Размещено : 30.03.2023 21:09
(@dream-theater)
New member

@eduard благодарю и за ответ и за терпение по отношению к новичкам )

ОтветитьЦитата
Создатель темы Размещено : 31.03.2023 10:26
Поделиться: