Xoring lettres de l'alphabet avec un caractère d'espace

Est-il une raison historique pourquoi Xoring n'importe quelle lettre avec le caractère espace des modifications le cas de la lettre? (c'est à dire, 'un' xor '' = 'Un', 'F' xor '' = 'f', etc...)

Ou est-ce juste une coïncidence?

(en supposant que les caractères sont codés en ASCII ou en unicode.)

19
demandé sur Aaron 2012-03-12 04:39:00

6 réponses

je suis sûr qu'il a été délibéré que le cas pourrait être changé en changeant un seul bit - il aura rendu le logiciel tôt beaucoup plus efficace. Le fait que le caractère d'espace soit #32 n'est pas pertinent.

17
répondu matthewk 2012-03-12 00:47:35

de l'article De wikipédia sur ASCII:

le code lui-même a été modelé de sorte que la plupart des codes de contrôle ont été ensemble, et tous les codes graphiques étaient ensemble, pour la facilité de identification. Les deux premières colonnes (32 postes) étaient réservées aux les caractères de contrôle.[19] le caractère" d'espace " devait passer avant graphiques pour faciliter le tri, il est donc devenu position 20hex; [20] pour la même raison, de nombreux signes couramment utilisés comme séparateurs ont été placé à l'avant chiffre. Le comité a décidé qu'il était important de support alphabets 64 caractères majuscules, et a choisi de modeler ASCII ainsi, il pourrait être réduite facilement utilisable 64-jeu de caractères graphiques code.[21] les lettres minuscules n'étaient donc pas intercalées majuscule. Pour garder les options disponibles pour les lettres minuscules et les autres graphiques, les codes spéciaux et numériques ont été organisés avant la lettres, et la lettre "A" a été placé en position 41hex pour correspondre à la le projet de la norme britannique correspondante.[22] Les chiffres 0 à 9 étaient disposés de façon à correspondre à des valeurs en binaire préfixé avec 011, faire la conversion avec binaire-codé décimal simple.

il semble Donc que le comportement est une heureuse coïncidence.

10
répondu Andrew Cooper 2012-03-12 00:50:22

Bon Point

ASCII est un enfant des codes utilisés par les téléimprimeurs électromécaniques communément connus sous le nom de marque Teletype.

il était tout à fait délibéré que seul un bit sépare les caractères majuscules et minuscules. Par ici la transmission et les systèmes de stockage pourraient utiliser 6 bits au lieu de 7.

en fait, vous n'avez pas besoin de XOR, vous pouvez utiliser ou ajouter pour obtenir la gamme de cas inférieure.

en ignorant simplement le bit, un périphérique qui ne pouvait imprimer que des majuscules était capable de gérer des entrées de mixed-case. Il est logique que cela peu être utilisé dans un espace de caractère ... c'est un peu qui était typiquement ignoré en termes de sélection d'éléments de type.

En voici un assez ancien restauré pour fonctionner ordre.

3
répondu DigitalRoss 2012-03-12 01:13:43

c'est juste une caractéristique des lettres ASCII et quelques autres ensembles de lettres alloués d'une manière similaire. Pour la grande majorité des caractères alphabétiques en Unicode, cela ne se produit pas. Par exemple, U+0100, U+0101. En général, les lettres minuscules et majuscules sont généralement attribuées à des positions de code consécutives. Et la plupart des caractères alphabétiques en Unicode n'ont pas le concept de minuscules/majuscules.

1
répondu Jukka K. Korpela 2012-03-12 05:52:26

ce n'est pas une coïncidence, c'est toujours vrai.

   Example:  hex of 'a' = 61  hex of space = 20 XOR 'a' and space = 41 = 'A' (in hex)
   same as:  hex of 'z' = 7A  hex of space = 20 XOR 'z' and space = 5A = 'Z' (in hex)
0
répondu james 2012-03-26 16:17:40

en ASCII, les majuscules sont des nombres binaires séquentiels commençant par A = 10 0,0001, alors que les lettres minuscules sont des nombres binaires séquentiels commençant par a = 11