Wie man in C++ Dezimal in Binär konvertiert
- Verwendung einer benutzerdefinierten Funktion zur Konvertierung von Dezimalzahlen in C++ in Binärdarstellung
-
Verwenden Sie die Klasse
std::bitset
, um Dezimalzahlen in C++ in Binärzahlen umzuwandeln
![Wie man in C++ Dezimal in Binär konvertiert](/img/Cpp/feature-image---How-to-convert-decimal-number-to-binary-in-Cpp.webp)
In diesem Artikel werden verschiedene Methoden zur Konvertierung von Dezimalzahlen in die binäre Darstellung in C++ vorgestellt.
Verwendung einer benutzerdefinierten Funktion zur Konvertierung von Dezimalzahlen in C++ in Binärdarstellung
Die flexible Methode definiert eine Funktion, die den int
-Wert nimmt, ihn in die entsprechende Binärdarstellung umwandelt und ihn als Zeichenkettenwert zurückgibt. In diesem Fall haben wir den Algorithmus unter Verwendung des modulo %
Operators und der while
Schleife implementiert, in der wir den Wert der Ganzzahl bei jeder Iteration um die Hälfte verringern.
#include <iostream>
using std::cout;
using std::endl;
using std::string;
string toBinary(int n) {
string r;
while (n != 0) {
r += (n % 2 == 0 ? "0" : "1");
n /= 2;
}
return r;
}
int main() {
int number = 15;
cout << "decimal: " << number << endl;
cout << "binary : " << toBinary(number) << endl;
return EXIT_SUCCESS;
}
Ausgabe:
decimal: 15
binary : 1111
Verwenden Sie die Klasse std::bitset
, um Dezimalzahlen in C++ in Binärzahlen umzuwandeln
Alternativ können wir direkt die bitset
-Klasse aus der STL-Bibliothek verwenden. bitset
repräsentiert eine Sequenz von N Bits fester Größe und bietet mehrere eingebaute Methoden zur effizienten Manipulation der Binärdaten. Das folgende Beispiel zeigt den Aufbau eines bitset
-Objektes durch Übergabe des string
-Wertes und eines int
-Wertes.
#include <bitset>
#include <iostream>
using std::bitset;
using std::cout;
using std::endl;
using std::string;
string toBinary(int n) {
string r;
while (n != 0) {
r += (n % 2 == 0 ? "0" : "1");
n /= 2;
}
return r;
}
int main() {
int number = 15;
bitset<32> bs1(toBinary(number));
cout << "binary: " << bs1 << endl;
bitset<32> bs2(number);
cout << "binary: " << bs2 << endl;
return EXIT_SUCCESS;
}
Ausgabe:
binary: 00000000000000000000000000001111
binary: 00000000000000000000000000001111
Beachten Sie, dass wir im vorhergehenden Code 32 Bits angegeben haben, die während der bitset
-Deklaration zugewiesen werden. Man kann eine andere Anzahl von Bits angeben, um ihren Bedürfnissen besser gerecht zu werden. Mehrere Szenarien werden im folgenden Codesegment demonstriert:
#include <bitset>
#include <iostream>
using std::bitset;
using std::cout;
using std::endl;
using std::string;
int main() {
int number = 15;
bitset<32> bs1(number);
cout << "binary: " << bs1 << endl;
bitset<16> bs2(number);
cout << "binary: " << bs2 << endl;
bitset<8> bs3(number);
cout << "binary: " << bs3 << endl;
bitset<5> bs4(number);
cout << "binary: " << bs4 << endl;
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
binary: 00000000000000000000000000001111
binary: 0000000000001111
binary: 00001111
binary: 01111
Die bitset
-Klasse hat mehrere nützliche Methoden, um mit ihrem Inhalt zu arbeiten. Diese Methoden können verwendet werden, um alle Bits des Satzes zu invertieren (flip
Funktion) oder um die spezifizierten Bits in der Sequenz zu zurückzusetzen
/zusetzen
. Die binären Kernoperationen wie AND
, OR
, XOR
, NOT
und SHIFT
werden ebenfalls unterstützt. Wir zeigen ein paar von ihnen im Beispiel unten, aber Sie können das vollständige Handbuch der Klasse bitset
hier sehen.
#include <bitset>
#include <iostream>
using std::bitset;
using std::cout;
using std::endl;
using std::string;
int main() {
int number = 15;
bitset<32> bs(number);
cout << "binary : " << bs << endl;
cout << "flipped: " << bs.flip() << endl;
cout << "shift>4: " << (bs >>= 6) << endl;
cout << "shift<5: " << (bs << 2) << endl;
cout << "reset : " << bs.reset() << endl;
cout << "set : " << bs.set(16) << endl;
return EXIT_SUCCESS;
}
Ausgabe:
binary : 00000000000000000000000000001111
flipped: 11111111111111111111111111110000
shift>4: 00000011111111111111111111111111
shift<5: 00001111111111111111111111111100
reset : 00000000000000000000000000000000
set : 00000000000000010000000000000000
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook