Tauschen Sie zwei Zahlen aus, 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,

Vertausche zwei Zahlen

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.

Auf diese Weise erfolgt der Austausch mithilfe einer temporären Variablen. Diese Methode funktioniert sowohl für Ganzzahlen als auch für Gleitkommazahlen.

Tauschen Sie mithilfe der arithmetischen Gleichung

Wie wir wissen, bedeutet Austauschen, den Inhalt zweier Objekte oder Felder oder Variablen auszutauschen. Unter Verwendung einer arithmetischen Operation tauschen bedeutet, die Swap-Operation unter Verwendung der mathematischen Gleichung, also Addition und Subtraktion, durchzuführen.

Wenn uns zwei Zahlen gegeben werden und wir zum Vertauschen aufgefordert werden, ohne eine temporäre Variable zu verwenden, können wir die Zahlen mithilfe von drei arithmetischen Gleichungen vertauschen.

Pseudocode zum Austauschen von Zahlen mithilfe einer arithmetischen Operation:

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 getauscht.

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 müssen wir in Python nicht einmal arithmetische Operationen ausführen. Wir können benutzen:

a,b = b,a

Hier ist eine Demonstration, bei der a=20, b=30;

Tauschen Sie mithilfe der arithmetischen Gleichung

Tauschen Sie mit Bitwise XOR-Operator

Diese Methode wird auch als XOR-Swap bezeichnet. XOR bedeutet Exklusiv-ODER. In diesem Bit nehmen wir zwei Bits als Eingaben für das XORwise Betrieb. Um eine Ausgabe von XOR zu erhalten, darf nur eine Eingabe 1 sein. Anderewise, die Ausgabe ist 0. Das Folgendewing Die Tabelle zeigt die Ausgabe für alle Kombinationen der Eingabe A B.

Wir müssen wissen, wie die XOR-Operation funktioniert, um zwei Zahlen mithilfe des Bits zu vertauschenwise Betrieb. 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 denselben Wert haben, ergibt die XOR-Operation 0; anderewise, 1. In diesem Beispiel verwenden wir eine 3-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.

Programm 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.

Tauschen Sie Zahlen mit Bit auswise-Arithmetik

Diese Methode ist die gleiche wie die arithmetische Methode, wir verwenden jedoch Bitwise Operationen wie UND, ODER und Kompliment zur Durchführung von Additionen und Subtraktionen. Bevor wir zu den Schritten gehen, schauen wir uns kurz „Kompliment“ 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.

Programm 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?

Unter Überlauf versteht man die Überschreitung des Grenzwerts. Arithmetischer Überlauf bedeutet, dass das Ergebnis einer arithmetischen Operation den Bereich oder die Grenze des Computers überschreitet archiZahlendarstellung der Struktur. Wenn zum Beispiel eine Zahl durch Null geteilt wird, wird sie unendlich und das Zahlensystem des Computers kann sie nicht in 32 oder 64 Bit speichern.

Darstellung ganzzahliger Zahlen
Ganzzahldarstellung in einem 32-Bit-System

Die Folge des arithmetischen Überlaufs kann sein:

  • Die Addition zweier positiver Zahlen wird negativ. Weil das Vorzeichenbit möglicherweise 1 wird, was eine negative Zahl bedeutet.
  • Die Addition zweier negativer Zahlen wird positiv. Weil das Vorzeichenbit möglicherweise 0 wird, was eine positive Zahl bedeutet.