Poinformuj mnie, jak mogę wydrukować trochę, jak printf("%d",bit);
.Jak wydrukować jeden bit?
Odpowiedz
Jeśli bit jest tylko int, który zawiera żądaną wartość w najmniej znaczącego bitu, a następnie:
printf("%d", bit & 0x1);
powinno wystarczyć. & wykonuje binarne-ORAZ o numerze tylko z pierwszym znaczącym bitem, więc usuwasz wszystkie pozostałe bity w liczbie całkowitej.
Należy pamiętać, że wydobycie jednego bitu od liczby wielobajtowej sprawia, że napotkasz problemy z endiansem. – gnud
@gnud: To ma zastosowanie tylko wtedy, gdy zostanie zrobione przeciwko pamięci, za pomocą wskaźników. bit i 0x1 zawsze będą działały, niezależnie od sposobu zapisania wartości w pamięci. – unwind
Aby wydrukować trochę m-ty (m od 1..16 lub 32) N:
void print_bit(n, m)
{
printf("%d", n & (1 << (m - 1)));
}
Zdjąć - 1
trochę jeśli bitowy licznik zaczyna się od 0.
To się nie uda. Ukrywasz bit, który chcesz, ale pozostawiasz ten fragment na miejscu, więc nie otrzymasz 1 ani 0. Aby zawsze uzyskać 1 lub 0 dla tego bitu, musisz przesunąć zmienną w prawo, a nie przesunąć maska została. – Herms
Dobrze, nieodebrane, dzięki. – Keltia
Co jest nieco w twojej funkcji? "N" nie jest używane. Czy chodziło Ci o printf ("% d", n & (1 << (m - 1))? – Koshmaar
Jeśli potrzebujesz aby uogólnić więcej niż Herms, możesz to zrobić:
#define IsBitSet(val, bit) ((val) & (1 << (bit)))
/* ... your code ... */
printf ("%c", IsBitSet(bit, 0) ? '1' : '0');
Plik printf jest odpowiednikiem odpowiedzi Herms, jak jest.
Jeśli mówisz bitfield w C, można to zrobić:
struct foo { int b:1; } myFoo;
printf("%c", myFoo.b ? '1' : '0');
Brakuje nawiasu zamykającego na końcu definicji makra, nie? – bortzmeyer
dobre złapanie - naprawiono to. – plinth
trochę ronda - dlaczego nie "((val) >> (bit)) i 0x1', więc możesz wydrukować go jako liczbę całkowitą zamiast potrójnego? –
Powiązane pytanie: How do you set, clear, and toggle a single bit? to rozbudowana dyskusja dostępu pojedynczego bitu w C i C++.
C++ odpowiedź jest łatwiejsza niż C89 jednego z natywnego typu bool:
bool b = true;
std::cout << b;
C99 jest dość podobny:
_Bool b = 1;
printf("%d", b);
Boole są generalnie niejedno bitowe. –
Można użyć "unii":
union bitshow {
unsigned bit1:1;
int i;
};
int main() {
union bitshow bit;
cin >> bit.i;
cout << bit.bit1;
return 0;
}
Czy to wydrukować najbardziej znaczące bit, najmniej znaczący bit lub coś innego? Nie możesz tego wiedzieć, ponieważ nie jest przenośny. – interjay
- 1. Odwróć jeden bit logiczny w Matlab
- 2. Jak ustawić, wyczyścić i przełączyć jeden bit w JavaScript?
- 3. Maska bitowa: jak określić, czy tylko jeden bit jest ustawiony
- 4. Typacasting bit bit copy
- 5. 32 bit unsigned operacja bitowe JavaScript jest jeden krótki
- 6. C/C++ Bit Array lub Bit Vector
- 7. .net InstallUtil - 32 bit vs 64 bit
- 8. Jak wydrukować plik JSON?
- 9. Jak wydrukować zmienną $ rootScope?
- 10. Jak wydrukować zawartość TextBox
- 11. Jak wydrukować parametry?
- 12. jak wydrukować zawartość PYTHONPATH
- 13. Jak wydrukować adres funkcji?
- 14. Bit zmiany w C++
- 15. Bit Striping w C
- 16. Bit Reversal bitwise
- 17. Java Crit-bit Trees
- 18. Ifstream - Resetuj bit EOF
- 19. Jak zainstalować cmake na Windows 64 bit
- 20. Jak sprawdzić, czy bitmask zawiera bit?
- 21. Jak rozbroić określony bit w liczbie całkowitej
- 22. svn: jak ustawić wykonywalny bit na pliku?
- 23. Jak znaleźć najbardziej znaczący bit (MSB)
- 24. Jak wydrukować 64-bitową liczbę całkowitą w GCC 4.4.1?
- 25. Jak wydrukować wartość zmiennej przez NSLog?
- 26. Jak ładnie wydrukować zawartość conn?
- 27. Jak wydrukować datę w C?
- 28. Jak wydrukować zawartość żądania HTTPrequest?
- 29. Jak wydrukować linię w JavaScript
- 30. Jak wydrukować formularz w Delphi?
To jest dobre pytanie, które wymaga przeprogramowania, ale nie mam jeszcze uprawnień do edycji ... –