Wie man in C++ Dezimal in Binär konvertiert

Jinku Hu 12 Oktober 2023
  1. Verwendung einer benutzerdefinierten Funktion zur Konvertierung von Dezimalzahlen in C++ in Binärdarstellung
  2. Verwenden Sie die Klasse std::bitset, um Dezimalzahlen in C++ in Binärzahlen umzuwandeln
Wie man in C++ Dezimal in Binär konvertiert

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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Verwandter Artikel - C++ Binary