Python Programa para trocar dois números sem usar uma terceira variável.
⚡ Resumo Inteligente
Swapping Dois números sem uma terceira variável trocam seus valores usando adição e subtração aritméticas.tracção, o operador XOR bit a bit, ou truques de aritmética bit a bit. Python Também é possível realizar a troca diretamente com a desempacotagem de tuplas.

As seções abaixo abordam quatro maneiras de realizar uma troca sem o uso de uma variável temporária, além de tratar o estouro aritmético.
Em linguagens de programação, trocarping Significa trocar os valores de duas variáveis. A variável pode conter um número, string, lista ou array, objeto, etc. A forma geral de troca é...ping É usar uma variável temporária para armazenar valores. Por exemplo,
As etapas gerais de trocaping dois números são:
- Declare uma variável temporária C
- Atribua o valor de A a C, ou seja, C = A. Agora C = 20
- Atribua o valor de B a A, então A = 30
- Atribua o valor de C a B, então B = 20, pois C tem o valor 20.
É assim que se faz uma troca.ping é feito com a ajuda de uma variável temporária e funciona tanto para números inteiros quanto para números de ponto flutuante.
Trocar usando equação aritmética
Como sabemos, trocaping Trocar significa permutar o conteúdo de dois objetos, campos ou variáveis. Trocar usando uma operação aritmética significa realizar a troca usando uma equação matemática, ou seja, adição e subtração.tracção.
Se nos forem dados dois números e for pedido que os troquemos sem usar uma variável temporária, então, usando três equações aritméticas, podemos trocar os números.
Pseudocódigo para trocaping números usando uma operação aritmética:
A = A + B B = A - B A = A - B
Vamos supor que temos dois números, A = 20 e B = 30.
Condição 1: A = A+B
Portanto, o valor atual de A é 20 + 30 = 50.
Condição 2: B =AB
Agora, B = 50-30 = 20
Podemos ver que obtivemos o valor de A em B.
Condição 3: A =AB
Finalmente, A = 50-20 = 30
A tem o valor inicial de B.
Então, apenas trocamos os números.
Aqui está o programa para trocar dois números em 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); }
Saída:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Programa em 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))
Saída:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Agora em Python, nem precisamos realizar operações aritméticas. Podemos usar:
uma,b = b,uma
Aqui está uma demonstração onde a=20, b=30;
Trocar usando Bitwise XOR Operator
Este método também é conhecido como troca XOR. XOR significa OU exclusivo. Nesta operação bit a bit, usamos dois bits como entradas para o XOR. Para obter uma única saída do XOR, apenas uma das entradas deve ser 1. Caso contrário, a saída será 0. A tabela a seguir mostra a saída para todas as combinações de entradas A e B.
Precisamos entender como a operação XOR funciona para trocar dois números usando a operação bit a bit. Aqui está uma tabela para XOR, onde A e B são os valores de entrada.
| A | B | A X OU B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Se duas entradas tiverem o mesmo valor, a operação XOR resulta em 0; caso contrário, em 1. Neste exemplo, usaremos uma operação XOR tripla. Na maioria das linguagens de programação, o XOR é representado por “^”.
Vamos assumir que A=4 (em binário = 0100) e B=7 (em binário, 0111).
Condição 1: A = A ^ B
| A | 0 | 1 | 0 | 0 |
| B | 0 | 1 | 1 | 1 |
| A^B | 0 | 0 | 1 | 1 |
Agora, A = 0011 (em binário).
Condição 2: B = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 1 | 1 |
| A^B | 0 | 1 | 0 | 0 |
Então B = 0100, que foi o valor binário inicial de A.
Condição 3: A = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 0 | 0 |
| A^B | 0 | 1 | 1 | 1 |
Finalmente, A = 0111, que era o valor binário equivalente de B.
Programa em 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); }
Saída:
Enter value of A:4 Enter value of B:7 A=4, B=7 Now, A=7, B=4.
Programa em 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))
Saída:
Enter the value of A:10
Enter the value of B:15
A=10 and B=15
Now, A=15,B=10.
Swap Numbers usando aritmética bit a bit
Este método é semelhante ao método aritmético, mas utilizaremos operações bit a bit, como AND, OR e complemento, para realizar a adição e a subtração.tracAntes de prosseguirmos com os passos, vamos dar uma olhada rápida em “complemento”.
O complemento de 1 significa trocar todos os 0 por 1 e todos os 1 por 0. Vejamos um exemplo.
- Vamos supor que o número seja 23, um número decimal.
- Convertendo para binário, obtemos 10111. Há apenas 5 bits, mas o computador armazena números em 8, 16, 32, 64… bits. Portanto, vamos adicionar um zero à frente do binário. Isso não alterará o valor original do número. Assim, ele se tornará 10111. 00010111.
- Como sabemos, o complemento de 1 significa trocar todos os 0 por 1 e todos os 1 por 0, portanto, aplicar o complemento de 1 sobre 1 significa trocar todos os 0 por 1 e todos os 1 por 0. 00010111 dá 11101000.
O complemento de 1 é representado pelo símbolo “~” na maioria das linguagens de programação. Colocar esse símbolo antes de qualquer valor inteiro ou de ponto flutuante resultará no complemento de 1.
E complemento de 2 significa adicionar “1” binário ao complemento de 1. Se fizermos o complemento de 2 ao número acima:
- Binário = 00010111
- Complemento de 1 = 11101000
- Complemento de dois:
11101000
+ 1
11101001
Portanto, o complemento de 2 é 11101001. Este é o binário para -23.
Em resumo, para realizar o complemento de 2 de um número A, ficará assim:
Complemento de 2 de A = (~A) + 1
Agora vamos assumir que A=8 (binário 00001000), B=10 (00001010)
Condição 1: UMA = (A e B) + (A | B)
É equivalente a A = A + B.
A e B = 00001000 e 00001010 = 00001000
Um | B = 00001000 | 00001010 = 00001010
Agora, 00001000 + 00001010 = 00010010 (decimal 18)
Então, A = 18
Condição 2: B = A + (~B) + 1
É equivalente a B = AB
Aqui, B = A – B
Com base na discussão acima, se precisarmos realizar sub-rotinastracEm seguida, calculamos o complemento de dois do número negativo e depois o somamos.
Então, -B = ~B + 1
Agora, B = 00010010 + (11110101) + 1 = 00001000
O valor de B equivale ao decimal 8, que era o valor inicial.
Condição 3: UMA = UMA + (~B) + 1
É equivalente a A = AB
Agora, A = 00010010 + 11110111 + 1
A = 00001010 (equivalente ao decimal 10)
Finalmente, A obteve o valor de B. Assim, a troca ocorreu.ping Foi completado.
Programa em 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); }
Saída:
Enter the value of A: 8 Enter the value of B:10 A=8, B=10 Now, A=10, B=8
Programa em 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))
Saída:
Enter the value of A: 25 Enter the value of B: 25 A = 25 and B = 25 Now, A = 25 and B = 25
O que é estouro aritmético?
O termo estouro significa ultrapassar o limite. Estouro aritmético significa que o resultado de qualquer operação aritmética excede o intervalo ou limite da representação numérica da arquitetura do computador. Por exemplo, se um número for dividido por zero, ele se torna infinito e o sistema numérico do computador não consegue armazená-lo em 32 ou 64 bits.
Representação de números inteiros em um sistema de 32 bits
A consequência do estouro aritmético pode ser:
- A soma de dois números positivos resulta em um número negativo, porque o bit de sinal pode se tornar 1, significando um número negativo.
- A soma de dois números negativos resulta em um número positivo, porque o bit de sinal pode se tornar 0, o que significa um número positivo.



