Umwandlung von Dezimalzahl zu Binärzahl
-
da war ich wohl zu lahm
-
geloescht schrieb:
pow(2, j) = 2 hoch j! Das ist diese berühmte Reihe: 1, 2, 4, 8, 16, 32, 64 usw.
1 << j ist genau das gleiche.
1 Dezimal = 1 Binär
2 Dezimal = 10 Binär
4 Dezimal = 100 Binär
8 Dezimal = 1000 Binär
16 Dezimal = 10000 Binär
usw.1 << j heißt, die binäre 1 wird j Stellen nach links verschoben. Aus meiner Tabelle ist ersichtlich, dass das das gleiche ist wie pow(2, j).
ich hoffe, es war nicht zu kompliziert
geloeschtJetzt hab's ich gemerkt, 2^j! Ich habe immer j^2 gelesen! 'ne neue Brille muss her...
-
Was wäre denn
pow(16,j)?
mit einem shift operator?
-
WilderSchorsch schrieb:
Was wäre denn
pow(16,j)?
mit einem shift operator?
4 << j?
-
da der links-shift einer multiplikation mit zwei gleich kommt
und viermal nachlinks somit 2*2*2*2 (also 16) ist, ja.
-
WilderSchorsch schrieb:
Was wäre denn
pow(16,j)?
mit einem shift operator?
1 << (4 * j)
-
Wie ich sehe sind hier ja die absoluten Optimierungsexperten am Werk
.
Warum nicht gleich so etwas?
std::string int2bin(int x) { std::string str; do str = (x & 1 ? "1" : "0") + str; while(x>>=1); return str; }
-
Weil nun die Bits in der Ausgabe von vorne nach hinten vertauscht sind, oder irre ich mich da
-
Äh nein! Die Reihenfolge sollte stimmen.
-
groovemaster2002 schrieb:
WilderSchorsch schrieb:
Was wäre denn
pow(16,j)?
mit einem shift operator?
1 << (4 * j)
Ist denn dies schneller als pow(16,j)?
-
char* inttobin(int x){return itoa(x,"",2);}
char* inttohex(int x){return itoa(x,"",16);}
char* inttooct(int x){return itoa(x,"",8);}
-
WilderSchorsch schrieb:
Ist denn dies schneller als pow(16,j)?
Wieso machst du nicht mal nen Benchmark Test und teilst uns die Ergebnisse mit?
MaSTaH schrieb:
Äh nein! Die Reihenfolge sollte stimmen.
Das ist wohl auch das einzigste was da stimmt.
Wo bleibt nur dieser Shlemiel?