Ich konvertiere eine Zahl in binär und muss putchar
verwenden, um jede Zahl auszugeben.
Das Problem ist, dass ich die Reihenfolge umgekehrt bekomme.
Gibt es trotzdem ein Zahlenbitmuster, bevor ich es selbst mache?
Wie in int n hat ein bestimmtes Bitmuster - wie kann ich dieses Bitmuster umkehren?
Es gibt viele Möglichkeiten, dies zu tun, einige sehr schnell. Ich musste nachsehen.
Bits in einem Byte umkehren
%Vor%Umkehren einer N-Bit-Menge in 5 * lg (N) -Operationen:
%Vor%Bits in einem Wort nach Lookup-Tabelle umkehren
%Vor%Weitere Informationen und Referenzen finden Sie Ссылка .
Bringe Bits von deiner Eingabe weg und drücke sie auf deine Ausgabe. Multiplikation und Division durch 2 sind die Push- und Pop-Operationen. Im Pseudocode:
%Vor%Siehe Modulo-Operation auf Wikipedia, wenn Sie diesen Operator nicht gesehen haben.
Weitere Punkte:
<<
, >>
, &
) anstelle von divide und modulo verwenden? Würde das schneller machen? Lass mich raten: Du hast eine Schleife, die das 0. Bit (n & amp; 1) druckt und dann die Zahl nach rechts verschiebt. Schreiben Sie stattdessen eine Schleife, die das 31. Bit (n & amp; 0x80000000) druckt und die Zahl nach links verschiebt. Bevor Sie diese Schleife ausführen, führen Sie eine weitere Schleife durch, die die Zahl nach links verschiebt, bis das 31. Bit den Wert 1 hat. Wenn Sie das nicht tun, erhalten Sie führende Nullen.
Auch das Umkehren ist möglich. Etwas wie dieses:
%Vor%Ich weiß: das ist nicht genau C, aber ich denke, das ist eine interessante Antwort:
%Vor%Der RCL-Opcode setzt das verschobene Bit in das Übertrags-Flag, dann stellt rcr dieses Bit in umgekehrter Reihenfolge wieder auf ein anderes Register.
Meine Vermutung ist, dass Sie eine ganze Zahl haben und Sie versuchen, sie in binäre umzuwandeln?
Und die "Antwort" ist ABCDEFG, aber Ihre "Antwort" ist GFEDCBA?
Wenn ja, würde ich den Endian der Maschine, auf der Sie es machen, überprüfen und die Maschine, von der die "Antwort" kam.
Hier sind Funktionen, die ich verwendet habe, um Bits in einem Byte umzukehren und Bytes in einem Quad umzukehren.
%Vor%Tags und Links c