Memory Addressing


 Byte-by-byte Addressing
char * string = "ABCDEF";
int i = 1; int j = 2; int x = 256; int y = 259;
(Assume a 2-byte word.)
00000000'A'
00000001'B'
00000010'C'
00000011'D'
00000100'E'
00000101'F'
00000110'\0'
00000111--?--
00001000 00000001 0000000000000001
00001001 00000000
0000101000000010 0000000000000010
0000101100000000
00001100 00000000 0000000100000000
00001101 00000001
0000111000000011 0000000100000011
0000111100000001

High-Order / Low-Order
 10
00000001, 00000000 'B''A'
00000011, 00000010 'D''C'
00000101, 00000100 'F''E'
00000111, 00000110 --?--'\0'
00001001, 00001000 00000000 00000001 (1)
00001011, 00001010 00000000 00000010 (2)
00001101, 00001100 00000001 00000000 (256)
00001111, 00001110 00000001 00000011 (259)
 16-bit Word Addressing
 01
00000000, 00000001 'A''B'
00000010, 00000011 'C''D'
00000100, 00000101 'E''F'
00000110, 00000111 '\0'--?--
00001000, 00001001 0000000100000000 (1)
00001010, 00001011 0000001000000000 (2)
00001100, 00001101 0000000000000001 (256)
00001110, 00001111 0000001100000001 (259)

(Addresses would actually be 16 bits long.)


 32-bit Word Addressing (High-Order → Low-Order)
 11100100
00000011, 00000010, 00000001, 00000000 'D''C' 'B''A'
00000111, 00000110, 00000101, 00000100 --?--'\0' 'F''E'
00001011, 00001010, 00001001, 00001000 00000000 00000000 00000000 00000001 (1)
00001111, 00001110, 00001101, 00001100 00000000 00000000 00000000 00000010 (2)
00010011, 00010010, 00010001, 00010000 00000000 00000000 00000001 00000000 (256)
00010111, 00010110, 00010101, 00010100 00000000 00000000 00000001 00000011 (259)

(Addresses would actually be 32 bits long.)


 64-bit Word Addressing (High-Order → Low-Order)
 111110101100 011010001000
00000 --?--'\0' 'F''E' 'D''C' 'B''A'
00001 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 (1)
00010 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000010 (2)
00011 00000000 00000000 00000000 00000000 00000000 00000000 00000001 00000000 (256)
00100 00000000 00000000 00000000 00000000 00000000 00000000 00000001 00000011 (259)

(Addresses would actually be 64 bits long.)


Alyce Brady, Kalamazoo College