Muszę pracować z liczbą binarną.
Próbowałem pisać:
const x = 00010000;
Ale to nie zadziałało.
Wiem, że mogę użyć liczby szesnastkowej o tej samej wartości 00010000
, ale chcę wiedzieć, czy istnieje typ w C ++ dla liczb binarnych, a jeśli nie, czy istnieje inne rozwiązanie mojego problemu?
00010000
to ósemkowe, prawda? (A w twojej deklaracji brakuje jakiegoś typu.)0b
pojawia się tylko w C ++ 14). Są zaprojektowane tak, aby były jednoznaczne.Odpowiedzi:
Możesz użyć
BOOST_BINARY
podczas oczekiwania na C ++ 0x. :)BOOST_BINARY
ma zapewne przewagę nad implementacją szablonów, o ile może być używana również w programach C (jest w 100% sterowana przez preprocesor).Aby to zrobić (np. Wydrukować liczbę w postaci binarnej), możesz użyć
itoa
funkcji nieprzenośnej lub zaimplementować własną .Niestety nie można zrobić podstawę 2 formatowania strumieni STL (ponieważ
setbase
będzie tylko zasady honorowe 8, 10 i 16), ale można używać zarównostd::string
wersjęitoa
, lub (w bardziej zwięzły, ale nieznacznie mniej wydajne)std::bitset
.produkuje:
Zapoznaj się także z The Suther Formatters of Manor Farm Herb Suttera, aby uzyskać interesującą dyskusję.
źródło
int main() { cout << bitset<8>(42); }
bitset
podpowiedź, ale już trochę poprawiłem,setbase
zanim zobaczyłem twój komentarz.