En C ++,
- Pourquoi un booléen est-il 1 octet et pas 1 bit de taille?
- Pourquoi n'y a-t-il pas de types comme des entiers 4 bits ou 2 bits?
Je manque les éléments ci-dessus lors de l'écriture d'un émulateur pour un processeur
En C ++,
Je manque les éléments ci-dessus lors de l'écriture d'un émulateur pour un processeur
De Wikipedia:
Historiquement, un octet est le nombre de bits utilisés pour coder un caractère unique de texte dans un ordinateur et il est pour cette raison, la base adressable élément dans de nombreux ordinateur architectures.
Si l'octet est la base adressable de l'unité, au-dessous de laquelle l'architecture de l'ordinateur ne peut pas combler. Et depuis il n'a pas (probablement) existent ordinateurs qui soutiennent les 4 bits de l'octet, vous n'avez pas de 4 bits bool
etc.
Toutefois, si vous pouvez concevoir une architecture de ce type qui peuvent résoudre les 4 bits de base adressable de l'unité, alors vous devrez bool
de la taille de 4 bits alors, sur cet ordinateur uniquement!
De retour dans les vieux jours, quand je devais aller à l'école dans un blizzard en rage, en montée dans les deux sens, et le déjeuner était quelque soit l'animal, nous pouvons suivre dans les bois derrière l'école et de les tuer avec nos mains nues, les ordinateurs avaient beaucoup moins de mémoire disponible qu'aujourd'hui. Le premier ordinateur que j'ai jamais utilisé a 6K de RAM. Pas 6 méga-octets, pas 6 go, 6 kilo-octets. Dans cet environnement, il fait beaucoup de sens pour emballer autant de booléens en un int comme vous avez pu, et donc nous l'utilisons régulièrement des opérations de les prendre et de les mettre dans.
Aujourd'hui, quand les gens vont se moquer de vous pour avoir seulement 1 GO de RAM, et le seul endroit où vous pourriez trouver un disque dur avec moins de 200 GO est à une boutique d'antiquités, c'est juste ne vaut pas la peine de le pack bits.
La réponse la plus simple est: c'est parce que la CPU adresse la mémoire en octets et non en bits, et les opérations au niveau des bits sont très lentes.
Cependant, il est possible d'utiliser l'allocation de taille en bits en C ++. Il existe une spécialisation std :: vector pour les vecteurs bits, ainsi que des structures prenant des entrées de taille binaire.
Vous pourriez avoir des bools 1 bit et des ints 4 et 2 bits. Mais cela ferait un ensemble d'instructions bizarres sans gain de performances, car c'est une façon peu naturelle de regarder l'architecture. En réalité, il est logique de "gaspiller" une meilleure partie d'un octet plutôt que d'essayer de récupérer ces données inutilisées.
La seule application qui dérange de mettre plusieurs objets dans un seul octet, d'après mon expérience, est Sql Server.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.