Datenstruktur - XOR

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 nmüssen Sie die folgenden Vorgänge viele Male wiederholen, um sie in umzuwandeln 0:

  • Dreht ndas Bit ganz rechts (das Bit 0) der binären Darstellung von um.
  • Wenn (i-1)das Bit ist 1und alle Bits von Bit (i-2)bis 0sind 0, dann drehe ndas Bit in der binären Darstellung von um i.

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

Guess you like

Origin blog.csdn.net/m0_73483024/article/details/132094662
XOR