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.
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.
Reazioni
0
0 Commenti
Diventa il primo a commentare