# Why does a memory address only contain 16 bytes of data?

0x8048384 <main+16>: 0x00fc45c7     0x83000000     0x7e09fc7d     0xc713eb02
0x8048394 <main+32>: 0x84842404     0x01e80804     0x8dffffff     0x00fffc45

So each memory address contains 16 bytes of data? 4x4 = 16. So 4 bytes is = 0x00fc45c7

Am I right?

• I am not sure I follow your question. Either you read it as 'One memory address contains one byte of data. Per definition. And in the case of PCs that byte is 8 bit wide). Then 0x00fc45c7 is a set of four bytes (0x00, 0xFC, 0x45 and 0xC7) written in a shorter form. Or you are looking at four sets of 4 bytes per line. – Hennes Nov 28 '12 at 23:28
• Hmm ... so it is 8 bytes wide. I thought it was 4 bytes wide. Because you have main incrementing from 16 to 16. Are you sure? – Alkerak Nov 28 '12 at 23:30
• 4 sets of 4 bytes is 16 bytes (or 0x10 bytes in hexadecimal). 0x80483<b>8</b>4 plus sixteen (0x10) is 0x80483<b>9</b>4 – Hennes Nov 28 '12 at 23:32
• ok, I think I got it. So 0x00fc45c7 is 4 bytes. And I have 16 bytes total per line. But is this not one memory address? 0x8048384. So in this memory address are stored 16 bytes of data or 0x00fc45c7 0x83000000 0x7e09fc7d 0xc713eb02 – Alkerak Nov 28 '12 at 23:36
• It depends on how you look at a memory address. One way is to look at an address is a single byte. Another way would be to look at it with the width of the databus (in which case a single address is a set of four sequential bytes. All which which can be read simultaneously, and which start at a modulo 4 offset). – Hennes Nov 28 '12 at 23:39