Il primo bug che mi ha insegnato a rispettare le larghezze dei bit era un flag di autorizzazione che continuava a schiarirsi Stavo ORando una maschera di bit in una colonna di numeri interi, e ogni tanto l'intero campo si ripristinava La causa era imbarazzante una volta che l'ho visto: stavo ragionando sui bit come se vivessero in 32 slot, ma il valore era già stato allargato e un randagio NON da qualche parte a monte aveva capovolto i bit che non avevo mai contabilizzato L'ho riparato sedendomi con una calcolatrice che mi mostrava i bit effettivi alla larghezza effettiva, non il decimale ordinato stampato nella mia lingua Questa guida riguarda quell'abitudine, usando il Calcolatore binario su Toolz.dev, e perché fare matematica bit a bit in cui puoi vedere ogni base contemporaneamente risparmia ore di ipotesi.
tl; dr: Un calcolatore binario esegue operazioni aritmetiche (aggiungere, sottrarre, moltiplicare, dividere) e bit a bit (AND, OR, XOR, NOT, spostamenti) su numeri interi scritti in binario, ottale, decimale o esadecimale e mostra il risultato in tutte e quattro le basi in modo aritmetico è esatto a qualsiasi dimensione; le operazioni bit a bit dipendono da una larghezza di bit scelta Il Calcolatore binario fa entrambe, interamente nel browser, e segnala le letture firmate e non firmate per i risultati bit a bit.
Che cosa è un calcolatore binario?
Una calcolatrice binaria è uno strumento che opera su numeri interi in base due, ma quelli utili non sono limitati a base due a tutti Scegli la base in cui stai pensando, binario, ottale, decimale o esadecimale, digita i tuoi numeri, scegli un'operazione e leggi la risposta I buoni mostrano quella risposta in ogni base simultaneamente, quindi non esegui mai una conversione separata per verificare la sanità mentale cosa hai ottenuto.
Il motivo per cui questo conta è che il lavoro di basso livello incrocia costantemente tra le basi Un colore è esadecimale, una maschera di autorizzazione è binaria nella tua testa ma decimale nel database, un valore di rete è ottale in una configurazione e decimale in un'altra Fare i conti in un posto, con tutte le rappresentazioni visibili, rimuove un'intera classe di errori di trascrizione Non stai copiando un valore esadecimale in un calcolatore decimale e speri di convertirlo per primo.
Su Toolz.dev il flusso è breve Scegli la base di input Digita il primo valore Scegli un'operazione Digita il secondo valore Il risultato viene visualizzato in binario, ottale, decimale ed esadecimale insieme, e per le operazioni bit a bit mostra anche la lettura con segno e il layout del bit alla larghezza scelta.
Quali operazioni supporta?
Due famiglie, e tenerle dritte è tutto il gioco Le operazioni aritmetiche sono add, sottract, moltiply, divide, and modulo Queste agiscono sul valore numerico vero, quindi si comportano come una matematica ordinaria e non si preoccupano della larghezza dei bit Division restituisce il quoziente intero e riporta l'eventuale resto, e modulo restituisce solo il resto, che è la distinzione che le persone ottengono più spesso all'indietro.
Le operazioni bit a bit sono AND, OR, XOR, NAND, NOR, XNOR, NOT e gli spostamenti a sinistra e a destra Questi agiscono sui bit grezzi all'interno di un registro fisso, quindi la loro risposta dipende interamente da quanto è largo quel registro. AND, OR e XOR sono i tre quotidiani: E maschera i bit off, O imposta i bit su, XOR li attiva/disattiva Le forme negate, NAND, NOR e XNOR, sono i loro complementi all'interno della larghezza NON capovolge ogni bit Gli spostamenti spostano l'intero modello a sinistra o a destra di un numero di posizioni, eliminando i bit che cadono dalla fine.
Ecco il modello mentale rapido che uso quando decido quale voglio:
| Operazione | Simbolo | Famiglia | Uso tipico |
|---|---|---|---|
| Aggiungi/Sottotrai | +/ - | Aritmetica | Matematica ordinaria intera, di qualsiasi dimensione |
| Moltiplicare /Dividere | ×/ (CONSIDERA | Aritmetica | Quoziente e resto dei rapporti di divisione |
| Modulo | moderare | Aritmetica | Solo resto, ad esempio indicizzazione wrap-around |
| E | & | Bitwise | Maschera bit off, prova una bandiera |
| O | | | Bitwise | Imposta bandiere, combina maschere |
| XOR | ^ | Bitwise | Attiva/disattiva bit, parità economica e swap |
| NON | ~ | Bitwise | Inverti ogni bit all'interno della larghezza |
| Spostare a sinistra/destra | << />> | Bitwise | Moltiplica o dividi per potenze di due, impacchetta i campi |
Perché devo scegliere una larghezza di bit?
Questa è la domanda che fa inciampare tutti i nuovi alla matematica bit a bit, ed è quella su cui la calcolatrice è più supponente L'aritmetica ha una risposta ovvia non importa la dimensione: cinque più tre fa otto sia che tu la immagini in un byte o in una parola a 64 bit Ma un bit a bit NON ha alcuna risposta finché non sai quanti bit esistono NOT di cinque è & quot; capovolgi ogni bit, & quot; e il risultato dipende dal fatto che ci siano otto bit o sessantaquattro da capovolgere.
Gli spostamenti hanno la stessa dipendenza dall'altra direzione Spostare un valore a sinistra abbastanza lontano e i bit marciano fuori dal bordo superiore Se svaniscono o si avvolgono dipende dalla dimensione del registro Un tipo di numero intero a larghezza fissa in C, Java, Go o Rust risponde definendo la larghezza in avanti: a uint8 sono otto bit, a uint32 è trentadue e ogni operazione bit a bit avviene all'interno di quella casella. La calcolatrice rispecchia esattamente questo aspetto consentendoti di scegliere 8, 16, 32 o 64 bit, quindi il risultato corrisponde a ciò che produrrà il tuo codice effettivo piuttosto che a un'astrazione idealizzata a larghezza infinita.
Scegliere la larghezza sbagliata non è un errore di arrotondamento, è una risposta diversa NON di cinque è 250 in otto bit e 4294967290 in trentadue Entrambi sono corretti per la loro larghezza, e nessuno dei due è corretto per l'altro Prendere l'abitudine di impostare la larghezza per abbinare il proprio tipo di dati è la singola disciplina più utile che questo strumento incoraggia.
Come si presenta il complemento a due' nei risultati?
Quasi ogni processore rappresenta numeri interi con segno utilizzando complemento two's, e la calcolatrice segue la stessa convenzione in modo che il suo output corrisponda al tuo hardware In complemento a due & #39; s, il bit superiore del registro ha un peso negativo, quindi un modello a otto bit di 11111010 si legge come 250 se lo tratti come senza segno o come -6 se leggi il bit superiore come segno.
Questo è il motivo per cui lo strumento riporta entrambe le letture per un risultato bit a bit Quando si esegue NOT su cinque bit su otto, si ottiene il modello di bit 11111010 La calcolatrice mostra il valore senza segno 250, il valore con segno -6 e il layout binario, in modo da poter vedere che sono gli stessi bit interpretati in due modi Quella doppia lettura è esattamente ciò di cui hai bisogno quando un valore incrocia tra un tipo con segno e uno senza segno nel tuo codice, che è una classica fonte di & quot; impossibile& quot; numeri che appaiono nei registri.
I risultati aritmetici seguono la stessa regola quando diventano negativi Sottrai dodici da cinque e la risposta vera è -7, che la calcolatrice mostra in decimale con un segno meno, mentre le sue forme binarie, ottali ed esadecimali usano il modello di complemento two' s all'interno della larghezza scelta, 11111001 in otto bit Vedere il valore negativo e il suo schema di bit fianco a fianco è come l'idea astratta di & quot; il segno è solo il bit" superiore; infine clicca.
Come faccio ad aggiungere o sottrarre numeri binari a mano, e controllarlo qui?
L'addizione binaria segue le stesse regole di riporto del decimale, con un alfabeto più piccolo Zero più zero è zero, zero più uno è uno, uno più uno è zero porta uno, e uno più uno più un riporto è uno porta uno Quindi 1010 più 1100 funziona colonna per colonna da destra: 0+0 è 0, 1+0 è 1, 0+1 è 1, 1+1 è 0 porta 1, e il riporto diventa il bit iniziale, dando 10110, che è 22 in decimale Punzonatura che nella calcolatrice conferma in ogni base contemporaneamente, che è il modo in cui controllo l'aritmetica della mia mano quando la sto reimparando per un colloquio o insegnandola a qualcuno.
La sottrazione è dove il complemento di due' guadagna la sua tenuta Piuttosto che prendere in prestito su colonne, i computer sottraggono aggiungendo il negativo, e il negativo si forma invertendo i bit e aggiungendone uno Raramente è necessario farlo a mano, ma spiega perché la calcolatrice può sottrarre in territorio negativo in modo pulito: 5 meno 12 diventa 5 più il complemento di due' s di 12, e il risultato è il modello -7 descritto sopra Se si vuole spostare un singolo valore tra le basi senza fare alcun calcolo su di esso, il Convertitore di numeri è lo strumento complementare e il traduttore binario gestisce il caso in cui si sta trasformando il testo in bit anziché fare aritmetica.
Quando contano effettivamente le operazioni bit a bit?
Più spesso di quanto i principianti si aspettino, e in luoghi che non sono ovviamente & quot; basso livello.& quot; i sistemi di autorizzazione sono il caso classico: un insieme di flag confezionati in un numero intero, dove si o concede un permesso, e con un complemento per revocarlo, e AND per testarne uno I toggle delle funzionalità, le modalità di file Unix e le mappe dei registri hardware utilizzano tutti lo stesso modello Se hai mai visto un valore come 0o755 o una costante definita come 1 << 3, hai incontrato il bit packing.
XOR si presenta in trucchi economici e algoritmi reali allo stesso modo: commutazione di un po', parità di calcolo e il classico scambio senza temp. Gli spostamenti si moltiplicano e si dividono per potenze di due molto più velocemente della moltiplicazione generale e racchiudono diversi piccoli campi in un'unica parola, ovvero il modo in cui i valori dei colori, le intestazioni di rete e i formati di serializzazione compatti rimangono piccoli. Colpisco questi costantemente in fase di sviluppo nello stack, da un'API Laravel che memorizza i flag di ruolo come maschera di bit a una tela React che legge RGBA da un numero intero compresso Comprendere le operazioni è un piccolo investimento che ripaga ovunque e ho scritto di come questi si adattano a un kit più ampio nello stack Strumenti di produttività per sviluppatori pezzo.
I guasti sottili sono ciò che rende una calcolatrice visibile vale la pena utilizzare Una maschera applicata alla larghezza sbagliata mantiene silenziosamente o rilascia i bit che non intendevi Uno spostamento che presupponeva 32 bit si comporta in modo diverso a 64 Un valore con segno ANDed contro una maschera senza segno produce un numero che sembra impossibile finché non vedi i bit di complemento a due' Guardare il layout dei bit cambiare mentre regoli la larghezza trasforma quei bug da misteri in errori evidenti.
C'è un angolo di insegnamento anche qui Quando spiego le bitmask a qualcuno di nuovo, i numeri decimali sono inutili: 12 E 10 essere 8 non significa nulla finché non si allineano 1100 e 1010 e si guarda l'AND tenere solo la colonna dove entrambi sono 1 Perché la calcolatrice mostra il layout binario accanto al decimale, ottale, e esadecimale, fa quell'allineamento per voi, e l'operazione smette di essere una regola da memorizzare e diventa qualcosa che si può vedere Lo stesso vale per i turni, dove mostrando che uno spostamento a sinistra di uno raddoppia il valore mentre scivolando ogni bit una colonna a sinistra collega il significato aritmetico alla meccanica a livello di bit in un modo che un singolo numero non può mai.
Quali sono i limiti, e i miei dati sono privati?
Il lato aritmetico non ha effettivamente alcun limite di dimensione La calcolatrice utilizza JavaScript' s BigInt, un tipo intero a precisione arbitraria standardizzato in ECMAScript, quindi sommare o moltiplicare numeri con dozzine di cifre rimane esatto senza overflow silenzioso Questo è un vero vantaggio rispetto alle calcolatrici costruite su normali numeri in virgola mobile, che perdono precisione oltre una quindicina di cifre e non possono rappresentare esattamente numeri interi grandi.
Il lato bit a bit è deliberatamente limitato dalla larghezza scelta, perché questo è il punto: un'operazione a larghezza fissa ha senso solo all'interno di un registro fisso Se inserisci un valore più grande della larghezza che può contenere, la calcolatrice lo riduce a quella larghezza e ti avverte, quindi un troncamento non avviene mai in silenzio I turni sono limitati a un massimo sano di mente quindi una quantità di spostamento fuori controllo non può appendere la pagina.
Sulla privacy, tutto viene eseguito nel browser Nulla di ciò che digiti viene caricato, registrato o archiviato e lo strumento continua a funzionare se ti disconnetti da Internet dopo il caricamento della pagina Ciò conta più di quanto sembri: i valori che le persone eseguono attraverso una calcolatrice bit a bit sono spesso maschere di autorizzazione, token o indirizzi hardware di sistemi che preferirebbero non incollare in un server che non controllano Se ti interessa quali strumenti mantengono i tuoi dati sulla tua macchina, il Privacy dei dati negli strumenti online la guida illustra come distinguere gli strumenti lato client da quelli che telefonano a casa Per lavori vicini di basso livello, il Convertitore IEEE 754 E il TAVOLA ASCII arrotonda il set.
Domande frequenti
Come faccio ad aggiungere due numeri binari?
Imposta la base di input su binario, digita il primo numero, scegli Aggiungi, digita il secondo numero e leggi il risultato Ad esempio, 1010 più 1100 è 10110, che lo strumento mostra anche come 22 in decimale, 26 in ottale e 16 in esadecimale. L'aritmetica è esatta a qualsiasi lunghezza.
Qual è la differenza tra operazioni aritmetiche e bit a bit?
Le operazioni aritmetiche (add, sottract, moltiply, divide, modulo) agiscono sul valore numerico reale e sono indipendenti dalla larghezza di bit Le operazioni bit a bit (AND, OR, XOR, NOT e shift) agiscono sui bit grezzi all'interno di un registro a larghezza fissa, quindi il loro risultato dipende dal fatto che si scelgano 8, 16, 32 o 64 bit.
Perché devo scegliere una larghezza di bit?
le operazioni NOT e shift hanno una risposta definita solo una volta nota la dimensione del registro, perché dipendono da quali bit esistono e quali cadono dalla fine Selezionando 8, 16, 32 o 64 bit la calcolatrice corrisponde al comportamento di uno specifico tipo di numero intero in un linguaggio di programmazione reale.
Come gestisce la calcolatrice i risultati negativi?
I risultati aritmetici negativi sono mostrati con un segno meno in decimale e le loro forme binarie, ottali ed esadecimali utilizzano il complemento two' s all'interno della larghezza selezionata Per i risultati bit a bit, lo strumento riporta sia il valore senza segno che il valore con segno two' s-complement.
Posso mescolare le basi, come aggiungere un numero esadecimale a uno decimale?
Entrambi gli operandi vengono letti nella singola base selezionata, quindi non è possibile mescolare le basi in un calcolo Per combinare un valore esadecimale e uno decimale, prima convertirne uno, quindi inserisci entrambi nella stessa base Il risultato viene sempre visualizzato in tutte e quattro le basi.
Cosa fa la calcolatrice quando divido?
Division restituisce il quoziente intero, e se la divisione non è esatta lo strumento riporta il resto come nota, per ottenere il resto da solo, usa invece l'operazione Modulo, che restituisce solo il resto.
Quanto possono essere grandi i numeri?
L'aritmetica utilizza JavaScript BigInt, quindi i numeri con molte decine di cifre vengono gestiti esattamente senza overflow Le operazioni bit a bit sono limitate dalla larghezza scelta; i valori che la superano sono ridotti a quella larghezza e lo strumento ti avvisa quando ciò accade.
I miei dati vengono inviati da qualche parte?
No. Ogni calcolo viene eseguito come JavaScript nel browser Nulla di ciò che digiti viene trasmesso, registrato o memorizzato e lo strumento continua a funzionare se ti disconnetti da Internet dopo il caricamento della pagina.
Prova tu stesso i conti con il libero Calcolatore binario. Gestisce operazioni aritmetiche e bit a bit su binario, ottale, decimale ed esadecimale, interamente nel browser, senza alcun caricamento.



