大小端存储方式和按字按字节寻址方式
首先理解单位
1位 = 1比特,即一位二进制数,可以表示为0或1。
1字节( byte,简写B ) = 8位( bit )
\(1KB = 2^{10}B\)
\(1MB = 2^{10}KB = 2^{20}B\)
\(1GB = 2^{10}MB = 2^{20}KB = 2^{30}B\)
对于字长为8位的计算机,1字 = 1字节。对于字长为16位的计算机,1字 = 2字节。32位和64位同理,不再赘述。
1字节有8位二进制数,范围是 0000 0000 到 1111 1111,换算为16进制则是 0x00 到 0xFF,也就是说,两位16进制数即是1个字节。
大小端存储方式
假设有一个4字节数据为0x12 34 56 78,其中0x12是高字节,0x78是低字节(这里不理解可以想想十进制,对于一个十进制数(如21),十位是高字节,个位是低字节),将其存放于地址0x4000 8000中,则:
| 内存地址 | 0x4000 8000(低地址) | 0x4000 8001 | 0x4000 8002 | 0x4000 8003(高地址) |
|---|---|---|---|---|
| 大端(大尾) | 0x12(高字节) | 0x34 | 0x56 | 0x78(低字节) |
| 小端(小尾) | 0x78(低字节) | 0x56 | 0x34 | 0x12(高字节) |
大小端还有另一种说法是大小尾,这样说应该更加容易让人理解。
按字寻址和按字节寻址
计算机中传输地址信息是用地址线传输的,有n根地址线,则可以传输 \(2^n\) 字节地址。
设有一个1MB容量的存储器,字长为32位,问:
-
按字节编址需要多少条地址线?寻址范围是多少?寻址范围大小是多少?
\(1MB\) = \(2^{20}B\)
1B即为1字节,因此需要 20 根地址线。寻址范围是 \(0\) 到\(2^{20}-1\)。寻址范围大小是\(2^{20} = 1M\)。 -
按字编制需要多少条地址线?寻址范围是多少?寻址范围大小是多少?
\(1MB\) = \(2^{20}B\)
1字 = 32位 = 4字节 = 4B
\(\frac{2^{20}}{2^2} = 2^{18}\)
因此需要18根地址线。寻址范围是 \(0\) 到\(2^{18}-1\)。寻址范围大小是\(2^{18} = 1M\)。

浙公网安备 33010602011771号