Vertauschen Sie zwei Zahlen, ohne eine dritte Variable zu verwenden: C, Python Programm
In der Programmierung bedeutet Sprachaustausch den Austausch des Werts zweier Variablen. Die Variable kann eine Zahl, eine Zeichenfolge, eine Liste oder ein Array, ein Objekt usw. enthalten. Die allgemeine Art des Austauschs besteht darin, eine temporäre Variable zum Speichern von Werten zu verwenden. Zum Beispiel,
Die allgemeinen Schritte zum Vertauschen zweier Zahlen sind:
- Eine temporäre Variable C deklariert
- Weisen Sie C den Wert von A zu, was bedeutet, dass C = A ist. Jetzt ist C = 20
- Weisen Sie A den Wert von B zu, also A = 30
- Weisen Sie B den Wert von C zu, also ist B = 20, da C den Wert 20 hat.
So wird das Swapping mithilfe einer temporären Variable durchgeführt. Diese Methode funktioniert sowohl für Ganzzahlen als auch für Gleitkommazahlen.
Tauschen Sie mithilfe der arithmetischen Gleichung
Wie wir wissen, bedeutet Vertauschen, den Inhalt zweier Objekte, Felder oder Variablen auszutauschen. Vertauschen mithilfe einer Rechenoperation bedeutet, die Vertauschungsoperation mithilfe einer mathematischen Gleichung durchzuführen, also Addition und Subtraktion.
Wenn uns zwei Zahlen gegeben sind und wir aufgefordert werden, sie ohne Verwendung einer temporären Variable zu vertauschen, dann können wir die Zahlen mithilfe von drei arithmetischen Gleichungen vertauschen.
Pseudocode zum Vertauschen von Zahlen mittels Rechenoperation:
A = A + B B = A - B A = A - B
Nehmen wir an, wir haben zwei Zahlen, A = 20 und B = 30.
Bedingung 1: A = A+B
Der aktuelle Wert von A beträgt also 20+30 = 50
Bedingung 2: B = AB
Nun ist B = 50-30 = 20
Wir können sehen, dass wir den Wert von A in B erhalten haben
Bedingung 3: A = AB
Schließlich ist A = 50-20 = 30
A hat den Anfangswert von B.
Also haben wir einfach die Nummern vertauscht.
Hier ist das Programm zum Vertauschen zweier Zahlen in C/C++:
#include<stdio.h> int main() { int a, b; printf("Enter value of A: "); scanf("%d", & a); printf("Enter value of B: "); scanf("%d", & b); printf("A = %d, B = %d", a, b); a = a + b; b = a - b; a = a - b; printf("\nNow, A = %d, B = %d", a, b); }
Ausgang:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Programm in Python:
a = int(input("Enter value of A: ")) b = int(input("Enter value of B: ")) print("A = {} and B = {}".format(a, b)) a = a + b b = a - b a = a - b print("Now, A = {} and B = {}".format(a, b))
Ausgang:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Jetzt in Pythonmüssen wir nicht einmal Rechenoperationen durchführen. Wir können verwenden:
a,b = b,a
Hier ist eine Demonstration, bei der a=20, b=30;
Tauschen mit Bitwise XOR OperaDo.
Diese Methode ist auch als XOR-Swap bekannt. XOR steht für exklusives ODER. Bei dieser bitweisen Operation verwenden wir zwei Bits als Eingaben für das XOR. Um eine Ausgabe von XOR zu erhalten, darf nur eine Eingabe 1 sein. Andernfalls ist die Ausgabe 0. Die folgende Tabelle zeigt die Ausgabe für alle Kombinationen der Eingaben A und B.
Wir müssen wissen, wie die XOR-Operation funktioniert, um zwei Zahlen mithilfe der bitweisen Operation zu vertauschen. Hier ist eine Tabelle für XOR, wobei A und B Eingabewerte sind.
A | B | Ein XOR-B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Wenn zwei Eingaben den gleichen Wert haben, ergibt die XOR-Operation 0, andernfalls 1. Für dieses Beispiel verwenden wir eine 3-fach-XOR-Operation. In den meisten Programmiersprachen wird XOR als „^“ bezeichnet.
Nehmen wir an, A=4 (binär = 0100) und B=7 (binär 0111)
Bedingung 1: A = A ^ B
A | 0 | 1 | 0 | 0 |
B | 0 | 1 | 1 | 1 |
A ^ B | 0 | 0 | 1 | 1 |
Nun ist A = 0011 (in Binärform).
Bedingung 2: B = A^B
A | 0 | 0 | 1 | 1 |
B | 0 | 1 | 1 | 1 |
A ^ B | 0 | 1 | 0 | 0 |
Also B = 0100, was der anfängliche Binärwert von A war.
Bedingung 3: A = A^B
A | 0 | 0 | 1 | 1 |
B | 0 | 1 | 0 | 0 |
A ^ B | 0 | 1 | 1 | 1 |
Schließlich ist A = 0111, was der äquivalente Binärwert von B war.
Programmieren in C/C++:
#include<stdio.h> int main() { int a, b; printf("Enter value of A: "); scanf("%d", & a); printf("Enter value of B: "); scanf("%d", & b); printf("A = %d, B = %d", a, b); a = a ^ b; b = a ^ b; a = a ^ b; printf("\nNow, A = %d, B = %d", a, b); }
Ausgang:
Enter value of A:4 Enter value of B:7 A=4, B=7 Now, A=7, B=4.
Programm in Python:
a = int(input("Enter value of A: ")) b = int(input("Enter value of B: ")) print("A = {} and B = {}".format(a, b)) a = a ^ b b = a ^ b a = a ^ b print("Now, A = {} and B = {}".format(a, b))
Ausgang:
Enter the value of A:10 Enter the value of B:15 A=10 and B=15 Now, A=15,B=10.
Tausch Numbers mit Bitweiser Arithmetik
Diese Methode ist dieselbe wie die arithmetische Methode, aber wir verwenden Bit-Operationen wie AND, OR und Compliment, um Addition und Subtraktion durchzuführen. Bevor wir zu den Schritten übergehen, schauen wir uns kurz „Compliment“ an.
Das 1er-Komplement bedeutet, alle 0 in 1 und 1 in 0 zu ändern. Nehmen wir ein Beispiel.
- Nehmen wir eine Zahl 23 an, eine Dezimalzahl.
- Die Konvertierung in Binär ergibt die Verwendung von 10111. Es gibt nur 5 Bits, aber der Computer speichert die Zahl in 8,16,32,64 ... Bits. Fügen wir also vor der Binärdatei eine Null hinzu. Der ursprüngliche Wert der Zahl wird dadurch nicht geändert. So wird es werden 00010111.
- Wie wir wissen, bedeutet 1er-Komplement, alle 0 in 1 und 1 in 0 zu ändern, also das 1er-Komplement erneut auszuführen 00010111 gibt 11101000
Das 1er-Komplement wird in den meisten Programmiersprachen mit dem Symbol „~“ dargestellt. Wenn Sie dieses Symbol vor ganzzahlige Werte oder Gleitkommawerte setzen, erhalten Sie das 1er-Komplement.
Und 2er-Komplement bedeutet das Hinzufügen der binären „1“ zum 1er-Komplement. Wenn wir das 2er-Komplement zur obigen Zahl machen:
- Binär = 00010111
- 1er Kompliment = 11101000
- Kompliment von 2:
11101000
+ 1
11101001
Das Zweierkomplement ist also 2. Dies ist die Binärzahl für -11101001.
Zusammenfassend sieht die Ausführung des Zweierkomplements einer Zahl A wie folgt aus:
2er-Komplement von A = (~A) + 1
Nehmen wir nun an, A=8 (binär 00001000), B=10(00001010)
Bedingung 1: A = (A & B) + (A | B)
Es entspricht A = A + B.
A & B = 00001000 & 00001010 = 00001000
A | B = 00001000 | 00001010 = 00001010
Nun, 00001000 + 00001010 = 00010010 (Dezimal 18)
Also, A = 18
Bedingung 2: B = A + (~B) + 1
Es entspricht B = AB
Hier gilt B = A – B
Aus der obigen Diskussion geht hervor, dass wir, wenn wir eine Subtraktion durchführen müssen, ein Zweierkomplement zur negativen Zahl ausführen und diese dann addieren müssen.
Also -B = ~B + 1
Nun ist B = 00010010 + (11110101) + 1 = 00001000
Der Wert von B entspricht der Dezimalzahl 8, dem Anfangswert.
Bedingung 3: A = A + (~B) + 1
Es entspricht A = AB
Nun ist A = 00010010 + 11110111 + 1
A = 00001010 (entspricht Dezimalzahl 10)
Schließlich erhielt A den Wert von B. Damit war der Austausch abgeschlossen.
Programmieren in C/C++:
#include<stdio.h> int main() { int a, b; printf("Enter value of A: "); scanf("%d", & a); printf("Enter value of B: "); scanf("%d", & b); printf("A = %d, B = %d", a, b); a = (a & b) + (a | b); b = a + ~b + 1; a = a + ~b + 1; printf("\nNow, A = %d, B = %d", a, b); }
Ausgang:
Enter the value of A: 8 Enter the value of B:10 A=8, B=10 Now, A=10, B=8
Programm in Python:
a = int(input("Enter value of A: ")) b = int(input("Enter value of B: ")) print("A = {} and B = {}".format(a, b)) a = (a & b) + (a | b) b = a + ~b + 1 a = a + ~b + 1 print("Now, A = {} and B = {}".format(a, b))
Ausgang:
Enter the value of A: 25 Enter the value of B: 25 A = 25 and B = 25 Now, A = 25 and B = 25
Was ist ein arithmetischer Überlauf?
Der Begriff Überlauf bedeutet Überschreiten der Grenze. Arithmetischer Überlauf bedeutet, dass das Ergebnis einer Rechenoperation den Bereich oder die Grenze der Zahlendarstellung der Computerarchitektur überschreitet. Wenn beispielsweise eine Zahl durch Null geteilt wird, wird sie unendlich und das Computerzahlensystem kann sie nicht in 32 oder 64 Bits speichern.
Die Folge des arithmetischen Überlaufs kann sein:
- Die Addition zweier positiver Zahlen ergibt eine negative Zahl. Denn das Vorzeichenbit könnte 1 werden, was eine negative Zahl bedeutet.
- Die Addition zweier negativer Zahlen ergibt eine positive Zahl. Denn das Vorzeichenbit könnte 0 werden, was eine positive Zahl bedeutet.