Dezimalzahl als Binary ausgeben
-
Was meint ihr zur Lösung (abgesehen davon, das IO getrennt sein sollte!)?
#include <sstream> #include <string> #include <iostream> #include <bitset> void bin(int num) { if (num >= 0) { std::ostringstream stream; stream << std::bitset<sizeof(int) * CHAR_BIT>(num); auto str = stream.str(); // to trim leading 0s std::cout << (num ? str.substr(str.find_first_of("1"), str.size()) : "0") << '\n'; } else { std::cout << "bin only defined for natural numbers.\n"; } } int main() { for (int n; std::cin >> n; ) { bin(n); } return 0; }
-
Warum ist num
signed
?
Warum nimmst du bei sizeofint
und nicht num?
-
Was ist denn hier das Ziel? Wenn es darum geht, schnell eine binäre Ausgabefunktion im C++-Stil um die bereits vorhandene Funktionalität zu wrappen, dann hat deine Funktion massenhaft Implementierungsschwächen, von denen du selber schon einige genannt hast. Wenn es um das Lösen einer typischen Hausaufgabe zu Zahlensystemkonvertieungen geht, hast du das Thema voll verfehlt.
-
Zu kompliziert für ein derart simples Unterfangen. std::bitset hab ich in meinen 20 Jahren C++ noch nie verwendet und der durchschnittliche C++ler hat davon erst gar nicht gehört.
Das kann man genauso kurz auch derart implementieren, dass es jeder Schüler ab seiner zweiten Informatik-Unterrichtsstunde versteht.