2009-10-13 14 views
3

Considérons un ordinateur qui a une mémoire adressable octet organisée en mots de 32 bits selon le schéma big-endian. Un programme lit les caractères ASCII entrés sur un clavier et les stocke dans des emplacements d'octets successifs, en commençant à l'emplacement 1000. Afficher le contenu de deux mots de mémoire aux emplacements 1000 et 1004 après que le nom "johnson" a été entré.Comment les caractères ASCII sont-ils stockés en mémoire?

+4

Alors que transcrivant votre question aux devoirs, vous mal orthographié ASCII – pavium

+0

Non seulement ASCII ... – Stephan202

+3

Non, non, c'est le code standard américain d'information sur l'échange Indentation . Vous savez, les choses que les gens luttent contre les guerres saintes, comme les onglets ou les espaces :-) – Joey

Répondre

3

Convertissez simplement chaque lettre en hexadécimal en utilisant un ASCII table pratique, et ajoutez-les à la mémoire de manière séquentielle. Cela rend facilement de superbes graphismes ASCII:

+------+--+--+--+--+ 
|0x1000|6A|6F|68|6E| 
+------+--+--+--+--+ 

Les quatre derniers octets ont été laissés, c'est des devoirs après tout.

+0

Votre joli art ASCII me rappelle douloureusement mes heures de barbotage avec J qui rend des valeurs encadrées comme celle-ci (http://www.jsoftware.com/ help/dictionary/d010.htm). – Joey

+0

@Johannes: En effet. Me rappelle d'une réponse de ma propre: http://stackoverflow.com/questions/897366/how-do-pointer-to-pointers-work-in-c/897414#897414 – Stephan202

-2

Je pense que les mots auront des valeurs suivantes:

1000: 0x6a6f686e 
1004: 0x736f6e00 

Parce que du nom ne contient que 7 caractères, huit caractères est inconnu, donc la dernière position (00) peut avoir une valeur.

+1

Vous ne jouez pas le jeu Victor; -RÉ – pavium

0

Il n'y a pas d'endianes pour stocker un seul octet (tel qu'un caractère ASCII). Endianes n'entre en jeu que lorsqu'une valeur est représentée par plusieurs octets. Ainsi, par exemple, stocker une séquence d'octets est la même dans little et big-endian, seule la représentation des octets est différente. Par exemple, prenez le numéro 3 735 928 559 (ou 0xdeadbeef en notation hexadécimale) et stockez comme un mot de 32 bits (par exemple, un int) à l'emplacement de mémoire 1000 donnera:

ADR: 1000 1001 1002 1004
BE: de annonce être ef
lE: ef être ad de

Questions connexes