Como os mesmos 32 bits guardam a distância entre galáxias e o diâmetro de um átomo? Dissecamos o IEEE 754: sinal, expoente com viés e mantissa com bit escondido, conversões à mão, infinito, NaN, subnormais e o épsilon de máquina.
Por que somar 0.1 e 0.2 não dá 0.3? Porque 0.1 é uma dízima periódica em binário. Convertemos frações entre bases por multiplicações sucessivas, vemos os bits de um float com struct e duas saídas práticas: inteiros para dinheiro e math.isclose para comparar.
Em Python, 5 and 6 devolve 6, e 5 & 6 devolve 4. Explicamos a diferença e os operadores bit a bit AND, OR, XOR, NOT e os deslocamentos, usados em máscaras que consultam, ligam, desligam e alternam bits. No fim, vemos de onde vem o 755 do chmod.
Para subtrair, o processador soma o primeiro número com o complemento do segundo, e um único somador faz as duas operações. Veremos o complemento de dois, por que 8 bits com sinal vão de -128 a +127 e como o overflow derrubou o Ariane 5 e travou o Pac-Man na fase 256.
As regras de soma e subtração da base 10 valem em qualquer base: muda só o valor que dispara o vai-um. Fazemos contas em binário, octal e hexadecimal, vemos por que com três parcelas o vai-um pode valer 2 e implementamos os dois algoritmos em Python.
Em qualquer base, o valor da própria base se escreve 10. Partimos da notação posicional para converter inteiros entre decimal, binário, octal e hexadecimal, com expansão, divisões sucessivas, agrupamento de bits e as funções bin, oct, hex e int do Python.