Calculadora Binária (Adição & Subtração)

Calculadora Binária (Adição & Subtração)

Calcule adição e subtração binária com transporte passo a passo (carry bits), complemento de dois, portas lógicas e conversão hexadecimal em tempo real.

Carregar Exemplo
Entrada de Operandos Duplos e Controle Lógico
Largura da Palavra (Word Width)8-Bit
Modelo da ALU:
Política de Overflow:
Endianness (Ordem dos Bytes):
Binário Normalizado:1111 1111
Decimal: 255Hex: 0xFF
Alternador Interativo de Bits A:Clique em qualquer bit para alternar o estado (0 ↔ 1)
+Adição Binária (A + B)
Binário Normalizado:0000 0001
Decimal: 1Hex: 0x01
Alternador Interativo de Bits B:Clique em qualquer bit para alternar o estado (0 ↔ 1)
Resultado Aritmético Calculado8-Bit
Fluxo Binário (Espaçado em 4 Bits)
0000 0000
Hexadecimal (0x)
0x00
Decimal sem Sinal (Unsigned)
0
Decimal com Sinal (Complemento de 2)
0
Latência da ALU em Silício e Modelo de HardwareRipple-Carry Adder (RCA - Linear O(N))
Atraso de Propagação: 192 ps
Complexidade de Transistores: ~224 Portas Lógicas
Flags de Estado de Hardware da ALU da CPUEFLAGS / CCR
Flag Zero (Z)ALTO (1)

Ativado quando o resultado aritmético é exatamente igual a 0

Flag Negative / Sinal (N)BAIXO (0)

Espelho direto do bit de sinal mais significativo (MSB) na largura de palavra ativa

Flag Carry (C)ALTO (1)

Transporte de saída aritmético sem sinal gerado além do MSB

Flag Overflow com Sinal (V)BAIXO (0)

Estouro em complemento de dois: operandos de mesmo sinal geraram resultado com sinal oposto

Simulação em Tempo Real do Circuito Somador Ripple Carry
Transporte de Entrada (C_in)Saída da Soma (S)
Estágio 7MSB (Bit Mais Significativo)PGA=1B=0C=1S=0Estágio 6Bit 6PGA=1B=0C=1S=0Estágio 5Bit 5PGA=1B=0C=1S=0Estágio 4Bit 4PGA=1B=0C=1S=0Estágio 3Bit 3PGA=1B=0C=1S=0Estágio 2Bit 2PGA=1B=0C=1S=0Estágio 1Bit 1PGA=1B=0C=1S=0Estágio 0LSB (Bit Menos Significativo)PGA=1B=1C=0S=0C_out=1
Largura de Palavra Ativa8-Bit (Arquitetura)
Flags da ALU Ativos2 Ativos / 4 no Total
Latência da ALU no Cliente192 ps (RCA)
Referência técnica e guia de arquitetura

Calculadora Binária (Soma & Subtração) — Guia de referência

Calcule a adição e subtração binária com bits de transporte passo a passo, valores sinalizados em complemento de dois, portas lógicas bit a bit e conversão hexadecimal em tempo real.

Calculadora Binária (Soma & Subtração) — Guia de referência — Arquitetura em memória do lado do cliente e fluxo de dados
Calculadora Binária (Soma & Subtração) — Guia de referência — Arquitetura em memória do lado do cliente e fluxo de dados

Parâmetros-chave e controles

Operando A (Parcela / Minuendo)Fluxo de Bits Binários [0-1]

Entrada binária primária em sequência de bits. Suporta comprimentos arbitrários de bits, prefixos 0b e delimitadores de nibbles (quadras). No modo de adição, atua como a primeira parcela; no modo de subtração, representa o minuendo do qual o Operando B é subtraído.

Padrão: 10110100
Operando B (Segunda Parcela / Subtraendo)Fluxo de Bits Binários [0-1]

Entrada binária secundária em sequência de bits. No modo de adição, representa a segunda parcela somada ao Operando A; no modo de subtração, atua como o subtraendo invertido e incrementado pela aritmética de complemento de dois.

Padrão: 01001101
Largura da Palavra do Registrador (Bit Depth)Capacidade do Registrador de Hardware (4, 8, 16, 32, 64-bit, Ilimitado)

Limite de hardware do registrador que define o truncamento em largura fixa, a posição do bit de sinal (MSB) e a faixa não sinalizada [0, 2^N - 1] versus a faixa sinalizada [-2^(N-1), 2^(N-1) - 1]. Um registrador de 8 bits abrange de 0 a 255 sem sinal, ou de -128 a +127 com sinal.

Padrão: 8-bit
Modo de Operação AritméticaSeletor de Operação da ALU (Somar / Subtrair)

Configura a operação da unidade lógica e aritmética (ALU): adição binária padrão com ou sem sinal (A + B + C_in) ou subtração de hardware por complemento de dois (A + (~B) + 1).

Padrão: add
Carry-In Inicial (C_in)Estado de Carry de Bit Único (0 ou 1)

Bit inicial de carry-in fornecido ao índice 0 (bit menos significativo / LSB). O padrão é 0 para adições isoladas; defina como 1 ao encadear adições de múltiplas palavras (ADC) ou ao concluir a negação em complemento de dois.

Padrão: 0
Padrão de Representação NuméricaCodificação de Sinal Inteiro (Sem Sinal / Complemento de Dois com Sinal)

Controla se o bit mais significativo (MSB) representa uma potência positiva padrão de base 2 (2^(N-1)) ou um peso negativo de sinal (-2^(N-1)) na notação de complemento de dois com sinal.

Padrão: unsigned

Dicas profissionais e melhores práticas

Detecte Overflow com Sinal Instantaneamente via XOR dos Dois Carries Superiores

Na aritmética em complemento de dois, ocorre overflow de hardware na CPU se, e somente se, o carry-in que entra no bit mais significativo (MSB) diferir do carry-out que sai dele: V = C_msb ^ C_msb_minus_1. Essa verificação com uma única porta XOR diagnostica na hora quando a soma de dois números positivos gera um resultado negativo errôneo ou quando a soma de dois negativos resulta em um valor positivo.

A Subtração em Complemento de Dois Descarta o Carry-Out Final

Ao efetuar a subtração binária por complemento de dois A - B = A + (~B + 1), caso o resultado seja positivo ou zero, é gerado um carry-out final de valor 1 (indicando que não houve necessidade de empréstimo / borrow sem sinal). Microprocessadores modernos (como x86 e ARM) invertem ou interpretam esse carry-out como uma flag de borrow invertida (B = ~C). Não confunda esse carry final com um overflow aritmético.

Atrasos de Propagação: Carry-Lookahead vs Ripple Carry

Em somadores básicos Ripple Carry (RCA), os bits de transporte propagam-se sequencialmente por N somadores completos, gerando um atraso de propagação de portas O(N) que gargala ALUs de alta velocidade. Processadores modernos utilizam somadores Carry-Lookahead (CLA), que calculam sinais de Geração (G_i = A_i & B_i) e Propagação (P_i = A_i ^ B_i) em paralelo em blocos de 4 bits, reduzindo o atraso de cálculo do carry para O(log N).

Atenção à Faixa Dinâmica Negativa Assimétrica no Complemento de Dois

Em um sistema de N bits com sinal em complemento de dois, o intervalo negativo alcança -2^(N-1), enquanto o positivo atinge apenas +2^(N-1) - 1. Por exemplo, em um registrador de 8 bits, o intervalo vai de -128 a +127. Tentar negar -128 (calculando 0 - (-128)) resulta no próprio -128, pois +128 não pode ser representado em 8 bits, disparando uma exceção de overflow de hardware não tratada.

Armadilhas comuns e solução de problemas

⚠️A soma de dois números binários positivos com sinal gera um valor negativo inesperado

Isso ocorre quando a soma ultrapassa o valor positivo máximo representável na largura de palavra selecionada (por exemplo, +120 + +15 = +135, que excede o limite máximo com sinal de 8 bits de +127). O 8º bit muda de 0 para 1, fazendo com que a CPU o interprete como um número negativo (-121) em complemento de dois. Trata-se de um clássico overflow de inteiros com sinal. Resolva verificando a Overflow Flag (V=1) ou expandindo o registrador de 8 bits para 16 bits.

⚠️Cadeias binárias de entrada contêm caracteres não binários, espaços ou prefixos iniciais

Notações de base como '0b1011', fragmentos hexadecimais ('0x1A'), vírgulas ou espaços irregulares atrapalham o processamento bit a bit. O sanitizador de entrada remove automaticamente prefixos '0b'/'0B' e normaliza espaços. Se forem inseridos caracteres diferentes de 0 e 1, o motor sinaliza as posições inválidas com um alerta visual vermelho e interrompe o cálculo até que dígitos binários válidos sejam inseridos.

⚠️O comprimento de bits do resultado excede o tamanho do registrador selecionado (Wraparound sem sinal)

Quando a soma de dois números sem sinal de N bits atinge ou ultrapassa 2^N (por exemplo, 255 + 1 = 256 em um byte de 8 bits), é gerado um bit adicional de carry-out de ordem (N+1). Em um registrador de hardware de largura fixa, esse bit não cabe na palavra e é armazenado na Carry Flag (C=1) da CPU, enquanto o valor no registrador faz o wraparound para 0. Para preservar a soma completa de 9 bits, mude a seleção de Largura da Palavra para 16 bits ou 'Ilimitado'.

⚠️A adição manual com transporte (vai-um) não coincide com o cálculo decimal conferido

Verifique se os bits de transporte (vai-um) estão se propagando para a coluna imediatamente à esquerda (índice i+1). Na adição binária, 1 + 1 = 10 (soma 0, transporte 1) e 1 + 1 + 1 (incluindo o transporte de entrada) = 11 (soma 1, transporte 1). Consulte a aba 'Grade de Transporte Passo a Passo (Lápis e Papel)', que destaca a linha de transporte ativo (C_in) diretamente acima de cada coluna de bits para identificar exatamente onde o cálculo manual divergiu.

Perguntas frequentes (FAQ)

Como somar dois números binários passo a passo?▼

Para somar dois números binários passo a passo, alinhe ambos à direita e calcule cada coluna da direita para a esquerda seguindo quatro regras fundamentais: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1 e 1 + 1 = 0 com transporte (vai-um) de 1 para a coluna seguinte. Se a coluna receber um bit de transporte 1, 1 + 1 + 1 resulta em 1 com transporte de 1. Registre o bit da soma abaixo da coluna e anote o bit de transporte logo acima da próxima coluna à esquerda, repetindo o processo até esgotar todos os bits e transportes finais.

Como funciona a subtração por complemento de dois na adição binária?▼

A subtração por complemento de dois transforma subtrações em adições por meio da identidade algébrica A - B = A + (~B + 1). Primeiro, inverta todos os bits do subtraendo B (trocando 0s por 1s e 1s por 0s para gerar o complemento de um). Segundo, some 1 a esse valor invertido para obter o complemento de dois. Terceiro, some esse resultado diretamente a A usando a adição binária padrão e descarte o bit final de carry-out. Por exemplo, 7 (0111) - 3 (0011) torna-se 0111 + 1101 = 10100; ao descartar o 5º bit, obtém-se 0100 (4 em decimal).

Qual é a diferença entre a Carry Flag (C) e a Overflow Flag (V)?▼

A Carry Flag (C) detecta overflow aritmético sem sinal quando o cálculo excede a capacidade máxima sem sinal (2^N - 1), enquanto a Overflow Flag (V) detecta erros aritméticos em operações com sinal em complemento de dois. Por exemplo, em um registrador de 8 bits (intervalo de 0 a 255 sem sinal, -128 a +127 com sinal), 255 + 1 gera um Carry (C=1, overflow sem sinal), mas nenhum overflow com sinal. Por outro lado, +64 + +65 = +129 ativa a Overflow Flag (V=1) porque o resultado ultrapassa +127 e faz o wraparound para -127, enquanto a Carry Flag permanece em 0.

Por que 127 + 1 resulta em -128 na aritmética binária de 8 bits com sinal?▼

No complemento de dois com sinal de 8 bits, o bit mais significativo (bit 7) possui peso negativo de -128 (-2^7). O valor decimal +127 é representado em binário como 01111111. Ao somar 1, obtém-se 10000000, o que define o bit de sinal como 1 enquanto todos os bits de magnitude menores tornam-se 0. Calculando o valor com sinal, temos (-128 * 1) + 0 = -128. Como um inteiro com sinal de 8 bits possui uma faixa assimétrica de -128 a +127, incrementar o valor positivo máximo causa wraparound para o menor valor negativo.

Qual é a diferença entre os circuitos Half Adder e Full Adder?▼

Um Half Adder (meio-somador) calcula a soma de duas entradas de 1 bit (A e B) fornecendo uma saída de Soma (S = A XOR B) e uma saída de Carry (C = A AND B), mas não consegue receber transporte de colunas anteriores. Já um Full Adder (somador completo) processa três entradas de 1 bit: A, B e um carry-in de entrada (C_in). Ele produz uma Soma (S = A XOR B XOR C_in) e um Carry-out (C_out = (A AND B) OR (C_in AND (A XOR B))), permitindo o encadeamento de múltiplos somadores completos para calcular números binários de vários bits.

Como calcular o complemento de dois de um número binário negativo?▼

Para encontrar o complemento de dois de um número binário, inverta todos os bits de 0 para 1 e de 1 para 0 (formando o complemento de um) e, em seguida, some 1 ao bit menos significativo (LSB). Um atalho prático é analisar o número da direita para a esquerda: mantenha todos os zeros à direita e o primeiro 1 inalterados; em seguida, inverta todos os bits restantes à esquerda desse primeiro 1. Por exemplo, para negar +6 (00000110), examinando da direita para a esquerda mantemos '10' intacto e invertemos os bits anteriores para '111110', resultando em 11111010 (-6 em formato com sinal de 8 bits).

Ferramentas e utilitários relacionados

Todas as ferramentas →