Python Программа для обмена местами двух чисел без использования третьей переменной.
⚡ Умное резюме
Обменping Два числа без третьей переменной меняют свои значения на месте, используя арифметическое сложение и вычитание.tracпобитовый оператор XOR или побитовые арифметические приемы. Python Также возможна прямая замена при распаковке кортежа.

В разделах ниже рассматриваются четыре способа обмена без использования временной переменной, а также арифметическое переполнение.
В языках программирования обменping Обмен значениями означает обмен значениями двух переменных. Переменная может содержать число, строку, список или массив, объект и т. д. Общий способ обмена значениямиping Это использование временной переменной для хранения значений. Например,
Общие этапы обменаping Это два числа:
- Объявите временную переменную C.
- Присвойте значение A значению C, что означает C = A. Теперь C = 20.
- Присвойте значение B значению A, поэтому A = 30.
- Присвойте значение C значению B, поэтому B = 20, поскольку C имеет значение 20.
Вот как происходит обменping Это делается с помощью временной переменной и работает как с целыми, так и с числами с плавающей запятой.
Обмен с использованием арифметического уравнения
Как известно, обменping Обмен данными между двумя объектами, полями или переменными означает замену их содержимого. Обмен данными с использованием арифметической операции означает выполнение обмена с помощью математического уравнения, то есть сложения и вычитания.tracния.
Если нам даны два числа и нас просят поменять их местами без использования временной переменной, то, используя три арифметических уравнения, мы можем поменять числа местами.
Псевдокод для обменаping числа, полученные с помощью арифметической операции:
A = A + B B = A - B A = A - B
Предположим, у нас есть два числа: A = 20 и B = 30.
Состояние 1: А = А+Б
Таким образом, текущее значение A равно 20 + 30 = 50.
Состояние 2: Б = АВ
Теперь Б = 50-30 = 20
Мы видим, что получили значение A в B.
Состояние 3: А = АВ
Наконец, А = 50-20 = 30
A имеет начальное значение B.
Итак, мы просто поменяли номера местами.
Вот программа для обмена двумя числами на языке 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); }
Выход:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Программа в 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))
Выход:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Сейчас в PythonНам даже не нужно выполнять арифметические операции. Мы можем использовать:
а, б = б, а
Вот демонстрация, где a=20, b=30;
Обмен с использованием побитового XOR Operaтор
Этот метод также известен как операция XOR-перестановки. XOR означает исключающее ИЛИ. В этой побитовой операции мы принимаем два бита в качестве входных данных для операции XOR. Чтобы получить один выходной результат от XOR, только один из входных битов должен быть равен 1. В противном случае выходной результат будет равен 0. В следующей таблице показаны выходные данные для всех комбинаций входных данных A и B.
Нам нужно знать, как работает операция XOR для обмена двух чисел побитовым способом. Вот таблица для операции XOR, где A и B — входные значения.
| A | B | А исключающее ИЛИ Б |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Если два входных значения одинаковы, то операция XOR возвращает 0; в противном случае — 1. В этом примере мы будем использовать операцию XOR 3. В большинстве языков программирования операция XOR обозначается как «^».
Предположим, что A=4 (в двоичном представлении = 0100) и B=7 (в двоичном представлении, 0111).
Состояние 1: А = А ^ Б
| A | 0 | 1 | 0 | 0 |
| B | 0 | 1 | 1 | 1 |
| А ^ В | 0 | 0 | 1 | 1 |
Теперь A = 0011 (в двоичном формате).
Состояние 2: Б = А^Б
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 1 | 1 |
| А ^ В | 0 | 1 | 0 | 0 |
Итак, B = 0100, что было начальным двоичным значением A.
Состояние 3: А = А^Б
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 0 | 0 |
| А ^ В | 0 | 1 | 1 | 1 |
Наконец, A = 0111, что было эквивалентным двоичным значением B.
Программа на 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); }
Выход:
Enter value of A:4 Enter value of B:7 A=4, B=7 Now, A=7, B=4.
Программа в 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))
Выход:
Enter the value of A:10
Enter the value of B:15
A=10 and B=15
Now, A=15,B=10.
Обмен Numbers с использованием побитовой арифметики
Этот метод аналогичен арифметическому, но для сложения и вычитания мы будем использовать побитовые операции, такие как И, ИЛИ и дополнение.tracПрежде чем перейти к шагам, давайте быстро рассмотрим понятие «дополнение».
Дополнительный код означает замену всех нулей на единицы и единиц на нули. Рассмотрим пример.
- Предположим, у нас есть десятичное число 23.
- Преобразование в двоичную систему дает нам 10111. В ней всего 5 бит, но компьютер хранит числа в 8, 16, 32, 64… битах. Поэтому добавим ноль перед двоичным числом. Это не изменит исходное значение числа. Таким образом, оно станет 00010111.
- Как известно, дополнительный код означает замену всех нулей на 1 и единиц на 0, поэтому выполнение дополнительного кода над 00010111 дает 11101000.
Дополнительный код в большинстве языков программирования обозначается символом «~». Помещение этого символа перед любым целочисленным или числом с плавающей запятой даст вам дополнительный код.
А дополнение до 2 означает добавление двоичной «1» к дополнению до 1. Если мы дополним 2 к указанному выше числу:
- Двоичный = 00010111
- Дополнительный код = 11101000
- Дополнительный код:
11101000
+ 1
11101001
Итак, дополнение до 2 равно 11101001. Это двоичный код для -23.
Вкратце, для выполнения дополнения до двух числа А это будет выглядеть так:
Дополнение до 2 к A = (~A) + 1
Теперь предположим, что A=8 (двоичное 00001000), B=10 (00001010).
Состояние 1: А = (А и В) + (А | В)
Это эквивалентно A = A + B.
А и Б = 00001000 и 00001010 = 00001000
А | Б = 00001000 | 00001010 = 00001010
Теперь 00001000 + 00001010 = 00010010 (десятичное 18).
Итак, А = 18
Состояние 2: В = А + (~В) + 1
Это эквивалентно B = AB
Здесь В = А – В
Из вышеизложенного обсуждения следует, что если нам необходимо выполнить подпрограммуtracВ этом случае мы выполняем дополнительное кодирование отрицательного числа, а затем прибавляем к нему полученное значение.
Итак, -B = ~B + 1.
Теперь B = 00010010 + (11110101) + 1 = 00001000
Значение B эквивалентно десятичному числу 8, которое было начальным значением.
Состояние 3: А = А + (~В) + 1
Это эквивалентно A = AB
Теперь А = 00010010 + 11110111 + 1.
A = 00001010 (эквивалент десятичной 10)
В итоге А получил значение В. Таким образом, произошла перестановка.ping было выполнено.
Программа на 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); }
Выход:
Enter the value of A: 8 Enter the value of B:10 A=8, B=10 Now, A=10, B=8
Программа в 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))
Выход:
Enter the value of A: 25 Enter the value of B: 25 A = 25 and B = 25 Now, A = 25 and B = 25
Что такое арифметическое переполнение?
Термин «переполнение» означает превышение предела. Арифметическое переполнение означает, что результат любой арифметической операции превышает диапазон или предел представления чисел, используемого в компьютерной архитектуре. Например, если число разделить на ноль, оно станет бесконечным, и компьютерная система счисления не сможет хранить его в 32 или 64 битах.
Представление целочисленного числа в 32-битной системе
Последствием арифметического переполнения может быть:
- Сложение двух положительных чисел приводит к отрицательному результату, поскольку знаковый бит может стать равным 1, что означает отрицательное число.
- Сумма двух отрицательных чисел становится положительной, поскольку знаковый бит может стать равным 0, что означает положительное число.



