Подскажите, пожалуйста, как мне напечатать бит, например printf("%d",bit);
.
Как напечатать один бит?
Ответы (6)
Если бит - это просто целое число, содержащее требуемое значение в младшем значащем бите, то:
printf("%d", bit & 0x1);
должен сделать это. & выполняет двоичное И с числом, в котором установлен только первый значащий бит, поэтому вы удаляете все остальные биты в целом числе.
Если вам нужно обобщить больше, чем Herms, вы можете сделать это:
#define IsBitSet(val, bit) ((val) & (1 << (bit)))
/* ... your code ... */
printf ("%c", IsBitSet(bit, 0) ? '1' : '0');
printf эквивалентен ответу Herms как есть.
Если вы говорите о битовом поле в C, вы можете сделать это:
struct foo { int b:1; } myFoo;
printf("%c", myFoo.b ? '1' : '0');
((val) >> (bit)) & 0x1
, чтобы вы могли напечатать его как целое число вместо троичного?
- person Aaron Dufour; 06.10.2012
Связанный вопрос: Как установить, очистить и переключить один бит? — это расширенное обсуждение однобитового доступа в C и C++.
Чтобы напечатать m-й бит (m от 1..16 или 32) числа n:
void print_bit(n, m)
{
printf("%d", n & (1 << (m - 1)));
}
Удалите бит - 1
, если ваш счетчик битов начинается с 0.
Ответ C++ проще, чем ответ C89, с собственным типом bool:
bool b = true;
std::cout << b;
C99 очень похож:
_Bool b = 1;
printf("%d", b);
Вы можете использовать «союз»:
union bitshow {
unsigned bit1:1;
int i;
};
int main() {
union bitshow bit;
cin >> bit.i;
cout << bit.bit1;
return 0;
}