Heim >Backend-Entwicklung >C++ >Vertauschen Sie die erste und letzte Ziffer einer Zahl
Der folgende Artikel enthält eine ausführliche Erklärung der Methode zum Ändern einer Zahl durch Umschalten ihres ersten und letzten Bits mithilfe von bitweisen Operatoren. Ein bitweiser Operator ist ein Operator, der zur Manipulation einzelner Bits in Binärzahlen verwendet werden kann oder Bitmuster.
Ändern Sie für eine gegebene Zahl n die Zahl so, dass das erste und das letzte Bit der Binärentwicklung der neuen Zahl umgedreht werden, d. h. wenn das ursprüngliche Bit 1 ist, sollte das umgedrehte Bit 0 sein und umgekehrt. Alle dazwischen liegenden Bits Das erste und das letzte Bit sollten unverändert bleiben.
Input: 13
Output: 4Die chinesische Übersetzung von
Die binäre Entwicklung von 13 ist 1101.
Nach dem Vertauschen des ersten und letzten Bits wird die Erweiterung zu 0100, was 4 entspricht.
Daher ist das Ausgabeergebnis 4.
Input: 27
Output: 10Die chinesische Übersetzung von
Die binäre Entwicklung von 27 ist 11011.
Nach dem Vertauschen des ersten und letzten Bits wird die Erweiterung zu 01010, was 10 entspricht.
Daher beträgt die Ausgabe 10.
Input: 113
Output: 48Die chinesische Übersetzung von
Die binäre Entwicklung von 113 ist 1110001.
Beim Umschalten des ersten und des letzten Bits wird die Erweiterung zu 0110000, was 48,
entsprichtDaher beträgt die Ausgabe 48,
Dieser Ansatz nutzt den bitweisen XOR- und Linksverschiebungsoperator. Wenn das entsprechende Bit beider Operanden unterschiedlich ist, wird der bitweise XOR-Operator als 1 ausgewertet; andernfalls wird er als 0 ausgewertet. Wir verwenden die Fähigkeit des bitweisen XOR-Operators zum Umschalten ein Bit. Wenn beispielsweise das erste Bit der Zahl n 1 ist, dann führt n ^ 1 dazu, dass das erste Bit der Zahl 0 ist. Wenn außerdem das erste Bit der Zahl auf 0 gesetzt ist, wird die Operation n ^ 1 wird es in 1.
ändernUm die erste Ziffer einer Zahl n umzudrehen, berechnen wir n^1. Es führt eine XOR-Operation durch und invertiert das niedrigstwertige oder erste Bit von n mit 1.
Um die letzte Ziffer umzudrehen, generieren wir eine Zahl k, bei der nur die letzte Ziffer festgelegt ist. Die Position r des letzten Bits ist gleich log2(n). Dies liegt daran, dass bei der binären Erweiterung von n log2(n) Bits verwendet werden.
Die folgenden Schritte werden durchgeführt, um diesen Ansatz umzusetzen −
Wenn n = 1, 0 anzeigen und zurückgeben.
Schalten Sie das erste Bit der Zahl um, indem Sie n mit 1.
Tauschen Sie die letzte Ziffer der Zahl aus, indem Sie n mit 1
Flagge | Eingabe ^ Flag | |
---|---|---|
0 | 0 | |
1 | 1 | |
0 | 1 | |
1 | 0 |
Betrachten Sie die Zahl 57. Die binäre Entwicklung von 57 ist 111001.
1 | 1 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 0 |
Um nun die letzte Ziffer zu ändern, ändern wir die Zahl 1 so, dass die letzte Ziffer anstelle der ersten gesetzt wird. Dazu müssen wir 1 um log
2(n) Stellen nach links verschieben, oder in diesem Fall log2(57), also 5. Danach erhalten wir:
0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 |
Das obige ist der detaillierte Inhalt vonVertauschen Sie die erste und letzte Ziffer einer Zahl. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!