Operazione bit a bit in maiuscolo Il carattere ASCII diventa minuscolo. Perché?

2

L'ho trovato nella libreria http_parser dell'implementazione node.js. Quando eseguo bit per bit, OPPURE un codice carattere ASCII in maiuscolo, converte la versione in minuscolo. La versione in minuscolo rimane così com'è.

Perché un OR bit a bit causa la modifica del codice ASCII nella lettera minuscola?

    
posta Showkat Ali 05.01.2015 - 16:47
fonte

1 risposta

9

ASCII ha diverse proprietà interessanti oltre a quella che hai indicato. È relativamente semplice accertare le proprietà di un personaggio. Ad esempio, tutti i caratteri stampabili sono maggiori o uguali a 32 (010 0000), quindi se AND un carattere con 96 (110 0000) e ottieni zero, deve essere non stampabile. Le lettere maiuscole e minuscole differiscono di un solo bit, come notato:

A = 100 0001, OR con 010 0000 dà a = 110 0001. Lo stesso vale per tutte le altre lettere.

a = 110 0001, AND con 101 1111 dà A = 100 0001. Lo stesso vale per tutte le altre lettere.

Questo rende banale eseguire ricerche senza distinzione tra maiuscole e minuscole tramite la semplice logica bit mask. Certamente è molto più facile che con alcuni caratteri codificati in Unicode che devono essere decodificati prima nei loro punti di codice (l'ASCII a 7 bit è anche UTF-8 valido, buona fortuna con altre codifiche).

Un'altra proprietà interessante è che i numeri iniziano tutti con i bit di ordine superiore 011. Se lo vedete, e i bit successivi sono 0-9 (0000 - 1001), potete prendere quei bit e interpretarli direttamente come un numero intero.

Non posso fornire citazioni specifiche di decenni fa quando EBCDIC e ASCII erano standard in competizione, ma è risaputo nella comunità CS che ASCII è stato progettato pensando a quelle proprietà specifiche. L'idea era di essere in grado di utilizzare il bit masking e l'aritmetica un modo semplice per rilevare e manipolare attributi leggibili dagli umani di caratteri ASCII.

Molti dispositivi di anni fa erano basati sui caratteri, come stampanti e terminali. Avere un modo semplice per i dispositivi low-tech del giorno di essere in grado di decodificare e utilizzare un personaggio senza CPU è stato un po 'difficile.

    
risposta data 06.01.2015 - 01:29
fonte

Leggi altre domande sui tag