Conversor de bases

Digite um número em qualquer base — ou uma conta inteira, como 0x7FCF34 + 0x20 ou (0x1234 >> 4) & 0xF — e veja o resultado em decimal, hexa, binário e octal, bit a bit e byte a byte.

Expressão

Prefixos: 0x1F ou $1F ou 1Fh hexa · 0b1010 binário (com hexa como padrão, 0b10 é o hexa 0B10) · 0o17 octal · 1_000 separador

Resultado

Bits

Clique num bit para ligar ou desligar — a expressão vira o novo valor em hexa. Embaixo de cada grupo de 4 bits, o dígito hexa correspondente.

Bytes e texto

Ponto flutuante

Digite um número com casas decimais: sai o padrão IEEE 754 de 32 bits.

Histórico

Operadores, funções e como a conta é feita

A conta é exata. Os números são inteiros de precisão arbitrária (BigInt), e cada passo é reduzido à largura escolhida — como o registrador faria. Por isso 0xFFFFFFFF + 1 dá 0 em 32 bits, e a página avisa que deu a volta.

Ordem de precedência, a mesma do C, da que amarra mais para a que amarra menos: ~ - (unários) → * / % → + - → << >> >>> → & → ^ → |. Na dúvida, use parênteses: a & 0xF << 4 é a & (0xF << 4).

Deslocamento à direita. Com "sem sinal", >> é lógico (entra zero). Com "com sinal", é aritmético (repete o bit de sinal) — é a diferença entre srw e sraw no PowerPC, ou sh e sha no TriCore. >>> é sempre lógico. Divisão trunca em direção a zero e o resto tem o sinal do dividendo, como em C.

Funções:

rol(x, n) e ror(x, n) — giram x dentro da largura.
bswap(x) — inverte a ordem dos bytes (big ↔ little-endian).
sext(x, bits) — estende o sinal de um valor de bits bits: sext(0xFF, 8) = −1.
zext(x, bits) — fica só com os bits bits baixos.
extr(x, pos, largura) — extrai um campo de bits, como o extr.u do TriCore.
bit(n) — 1 << n. mask(mb, me) — a máscara do rlwinm do PowerPC, com MB e ME na numeração do manual (bit 0 = mais significativo), em 32 bits.
clz(x), popcnt(x), abs(x), min(a, b), max(a, b).
ans — o último valor guardado no histórico.

Ponto flutuante. Os 32 bits baixos são lidos como float IEEE 754 — é como um mapa ou uma constante em float aparece no hex dump. Em 64 bits, a palavra inteira também é lida como double.