dezimal in dual
-
hallo!
ich muss ein programm schreiben das eine dezimalzahl in eine binäre zahl umrechnet, ohne multiplikation oder division zu verwenden...und mir fällt einfach nichts ein wie ich das lösen könnte...falls jemand eine idee hätte bitte posten!
danke
-
theriddler schrieb:
ohne multiplikation oder division zu verwenden...
mach's mit 'bit-shifts' und '&'-verknüpfungen...
-
std::bitset

-
und was genau heisst das?
wenn ich zb habe:#include <iostream>
using namespace std;
int main()
{
int x=45;
cout << x;
return 0;
}und x muss als binärzahl ausgegeben werden...
danke nochmal!
-
Hallo
/Edit : doch besser std::bitset benutzen, und von dort die Konvertierung in string benutzen.
bis bald
akari
-
for(i = 31; i >= 0; i--) cout <<((x>>i)&1);
-
wie verwende ich std::bitset...könnt ihr mir vielleicht ein bsp geben...
-
Sicher:
http://www.cppreference.com/cppbitset/index.html
bzw. gleich bei der Beschreibung des Konstruktors gucken:
http://www.cppreference.com/cppbitset/bitset_constructors.htmlGreetz
-
Da das sicher eine Hausaufgabe ist, sollst du das sicher von Hand lösen und kein bitset verwenden.
Der Algorithmus ist denkbar einfach, du gehst jede Stelle durch und prüfst ob diese gesetzt ist (dazu verwenden du einfach ein Bitweises UND zwischen der Zahl und deinem "Iterator" der jede Bitposition durchgeht, den lässt du bei 0x1 starten, dem ersten Bit, und nach jedem Schritt verschiebst du ihn um eins nach links, mit marker <<= 1, das ist die Kurzschreibweise für marker = marker << 1).Die Anzahl an Bits kannst du ermitteln mit std::numeric_limits<der Typ >::digits + 1.
numeric_limits steht in dem header <limits>