Datenstruktur - XOR
1. Wo wird XOR verwendet?
1. == Operator
== //判断是否相同 用到了异或,看异或结果如果是0就是相同,不是0就是不同
//注意:== 不能给小数用,小数没有相等的概念,所以小数判断是否相同都是进行相减判断
2. Finden Sie eine Zahl, die nur einmal (ungerade Anzahl) in einer Reihe von Zahlen vorkommt
Prämisse: Es gibt höchstens zwei Zahlen, die nur einmal vorkommen (ungerade Häufigkeit)
3. Speicher löschen
selbst x oder selbst
4. Austausch
Eine Möglichkeit zum Austauschen ohne eine dritte Variable
//加减法
int a;
int b;
a=a+b;
b=a-b;
a=a-b;
//异或
int a;
int b;
if(a^b){
//先判断是否相同,相等的话就不换了
a=a^b;
b=a^b;
a=a^b;
}
2. Addition ohne „+ – * /“
Methode:
1. Zuerst die beiden Zahlen XOR-verknüpfen (das Ergebnis ist eine Zahl ohne Übertrag)
2. Die beiden Zahlen werden dann mit UND verknüpft (das Ergebnis ist eine Zahl, die um ein Bit nach rechts verschoben wird, daher besteht der nächste Schritt darin, sie nach links zu verschieben).
3. Die durch Phase AND erhaltenen Daten werden erneut nach links verschoben (die erhaltene Zahl ist die Übertragszahl).
4. Betreiben Sie die im ersten und dritten Schritt erhaltenen Zahlen vom ersten Schritt an weiter, bis die im dritten Schritt erhaltene Zahl 0 ist (wenn der Übertrag 0 ist).
Code wird wie folgt angezeigt
int Add(int a, int b) {
int And=0;
int Xor=0;
while (1) {
And = a & b;
Xor = a ^ b;
//不进位
if (!And) {
return Xor;
}
//进位
And = And << 1;
a = And;
b = Xor;
}
}
3. Gray-Code (exklusive ODER-Anwendung)
//二进制
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 1
1 0 0 0
//二进制格雷码
0 0 0 0
0 0 0 1
0 0 1 1
0 0 1 0
0 1 1 0
0 1 1 1
0 1 0 1
0 1 0 0
1 1 0 0
So konvertieren Sie vom binären in den binären Gray-Code (XOR)
Das binäre High-Bit (das erste Bit) ist reserviert, um das binäre Gray-Code-High-Bit (das erste Bit) zu erhalten.
XOR-Verknüpfung des zweiten Bits der Binärdatei mit dem ersten Bit der Binärdatei, um das zweite Bit des binären Gray-Codes zu erhalten
XOR-Verknüpfung des dritten Binärbits mit dem zweiten Binärbit, um das dritte Binärbit des Gray-Codes zu erhalten
und so weiter
Zum Beispiel wird 0 0 1 0 zu 0 0 1 1
So konvertieren Sie vom binären Gray-Code in den binären Code (XOR)
Das High-Bit (erstes Bit) des binären Gray-Codes ist reserviert, um das High-Bit (erstes Bit) des Binärcodes zu erhalten
Das zweite Bit des binären Gray-Codes wird mit dem ersten Bit des Binärcodes XOR-verknüpft, um das zweite Bit des Binärcodes zu erhalten
Das dritte Bit des binären Gray-Codes wird mit dem zweiten Bit des Binärcodes XOR-verknüpft, um das dritte Bit des Binärcodes zu erhalten
und so weiter
Zum Beispiel wird 0 0 1 0 zu 0 0 1 1
Sehen Sie sich eine Frage zum Thema Gray-Code-Wissen an
Leckfrage 1611
Thema: Bei einer gegebenen Ganzzahl n
müssen Sie die folgenden Vorgänge viele Male wiederholen, um sie in umzuwandeln 0
:
- Dreht
n
das Bit ganz rechts (das Bit0
) der binären Darstellung von um. - Wenn
(i-1)
das Bit ist1
und alle Bits von Bit(i-2)
bis0
sind0
, dann drehen
das Bit in der binären Darstellung von umi
.
Gibt die minimale Anzahl von Vorgängen zurück n
, in die konvertiert werden soll0
Die beiden Operationsmethoden hier sind die beiden Flipping-Methoden des Gray-Codes
0 二进制 0 0 0 0 对应二进制格雷码 0 0 0 0
1 二进制 0 0 0 1 对应二进制格雷码 0 0 0 1
2 二进制 0 0 1 0 对应二进制格雷码 0 0 1 1
//0到1
二进制格雷码发生的就是第一次翻转方法
//1到2
二进制格雷码发生的就是第二次翻转方法
//二进制格雷码这种翻转方式是交替进行的(如上面0到1,1到2)
Problemlösungsmethode: 1. Behandeln Sie diese Zahl als Gray-Code
2. Konvertieren Sie diesen Gray-Code in einen Binärcode
3. Schreiben Sie die minimale Anzahl von Operationen entsprechend dem Binärwert