8086 CPU には 16 ビットのデータ バスがあり、Pentium CPU には 32 ビットのデータ バスがあることを知りました。これは、各メモリ アドレスがデータ バスのサイズを保持することを意味します。
例えば:
16bit = 2^16 = 65,536
binary 0000 0000 0000 0000 ~ 1111 1111 1111 1111
hex 0000 0000 ~ FFFF FFFF
dec 000,000 ~ 65,535
65,536 / 1024 = 64 so can be 64kbyte of maximum memory address.
like 0x 0000,0000 ~ 0x FFFF,FFFF
32bit = 2^32 = 4,294,967,296
binary 0000 0000 0000 0000 0000 0000 0000 0000
~ 1111 1111 1111 1111 1111 1111 1111 1111
hex 0000 0000 0000 0000 ~ FFFF FFFF FFFF FFFF
dec 0,000,000,000 ~ 4,294,967,296
4,294,967,296 / 1024 / 1024 = 4 so can be 4mb of maximum memory address
like 0x 0000,0000,0000,0000 ~ 0x FFFF,FFFF,FFFF,FFFF
私は正しいですか?そう思います。しかし、C プログラミングでは:
int arr[2];
printf("%p %p \n", &arr[0],&arr[1]);
-----------------------------------
0x 7fff5c474b20, 0x 7fff5c474b24 (this is 64bit addressing)
整数が4バイトであることは知っています。のサイズは、&arr[1]-&arr[0]すべての0x4アドレスが 8 ビットのデータ バスのみを保持することを意味します。
CPU が 8 ビット以上を保持できるのに、なぜ C は 8 ビットしか保持できないのですか?