Convertitore di base numerica e complemento a due

I tuoi dati

Uno 0b, 0o o 0x davanti viene accettato e ignorato, e lo stesso vale per spazi e trattini bassi tra le cifre.

Risultati

Quanto valgono quei bit, letti come hai scelto

Esattamente gli stessi bit, letti nell'altro modo
In binario
In esadecimale
In ottale
Tutto quello che sta in questa larghezza

Negarlo, passo per passo

Parti dai bit
Invertili tutti
Aggiungi uno, ed ecco il negativo
Che fa

Invertire i bit e aggiungere uno è la stessa cosa che sottrarre da due elevato alla larghezza, ed è stato verificato su tutte le duecentocinquantasei configurazioni di otto bit. Farlo due volte restituisce sempre il punto di partenza, ed è la proprietà che fa funzionare l'intero schema.

Questa pagina conta con numeri interi di qualsiasi dimensione invece che con la solita virgola mobile, perché oltre i nove biliardi circa il tipo comune comincia a saltare valori: due elevato a cinquantatré più uno esce come due elevato a cinquantatré. A sessantaquattro bit questo darebbe risposte sbagliate in silenzio.

Reazioni

0

0 Commenti

User profile image

Diventa il primo a commentare

Perché 200 esce come meno 56?

Perché 200 e meno 56 sono gli stessi otto bit: 11001000. Niente in quei bit dice quale dei due intendevi. La larghezza e la lettura si decidono altrove, da chi ha scritto il programma, e i bit vanno bene per entrambe le risposte.

Tutta la differenza è il bit più a sinistra. Finché è spento, le due letture coincidono esattamente, ed è per questo che il disaccordo resta invisibile finché un valore non supera la metà.

Perché l'intervallo va da meno 128 a 127 e non da meno 127 a 127?

Perché lo zero deve stare da qualche parte, e sta dal lato positivo. Otto bit danno 256 configurazioni diverse; una se ne va per lo zero, e ne restano 255 da spartire. La spartizione è 127 positivi e 128 negativi, quindi il lato negativo ne prende uno in più.

È uguale a ogni larghezza: 16 bit vanno da meno 32768 a 32767, e 64 bit da meno 9223372036854775808 a 9223372036854775807.

Esiste un numero senza opposto?

Sì, esattamente uno per larghezza: il più negativo. Meno 128 in otto bit non ha un gemello positivo, perché 128 richiederebbe un posto che il lato positivo non ha.

Inverti i bit di 10000000 e ottieni 01111111; aggiungi uno e sei di nuovo a 10000000. Negarlo restituisce lo stesso numero. Questa pagina lo mostra invece di nasconderlo, e la proprietà è stata verificata a 8, 16, 32 e 64 bit.

Che succede quando il numero non ci sta?

Gira, e questa pagina mostra il giro invece di rifiutare. Scrivere 300 in otto bit memorizza 44, e scrivere meno 129 memorizza 127.

Non è la pagina a essere permissiva: è quello che fa l'hardware. Mostrare un errore nasconderebbe proprio il comportamento che causa il bug che probabilmente sei venuto a capire.