我正在学习编程基础课程,目前我正在谈论有关计算机组织和位操作的章节 - CPU(ALU,CU,寄存器等)如何工作。
我对二进制语言有相当好的理解。我理解符号/幅度格式/ 1的补码,2的补码等。
在书中我了解到半字节= 4位,8位= 1字节接下来是一个字 - 通常是组:8位,16位,32位或64位(依此类推),以及这一切对我来说都很有意义。这是我的作业问题,这让我很困惑:
“一台计算机有64 MB的内存,每个字是4个字节。需要多少位来处理内存中的每个字?”
好吧,我现在很困惑。这本书告诉我,一个单词通常是8的倍数。 但是我知道1字节= 8位,所以由于有4个字节和1个字节= 8个字节,认为4字节x 8位= 32位是否正确?这是答案吗?答案 0 :(得分:5)
1位地址可以寻址两个字(0,1)。
2位地址可以寻址四个字(00,01,10,11)。
3位地址可以寻址8个字(000,001,010,011,100,101,110,111)。
首先回答:你有几个字?然后回答:你的地址需要多少位才能解决它们?
答案 1 :(得分:3)
64MB = 67108864字节/ 4字节=内存中的16777216个字,因此每个单字可以24位寻址(第一个字的地址为000000000000000000000000,最后一个地址为111111111111111111111111)。另外2个被提升到24 = 16777216,因此需要24位来寻址存储器中的每个字。
要求是用一个地址表示每个存储器字,该地址以位为单位,以便可以表示每个字。
例如,要表示4个字,您需要4个地址,2个被提升为2是4,所以您需要两个位。 00是第一个字的地址,01是第二个字的地址,10是第三个字的地址,11是第4个字的地址。
对于8个字,您需要8个地址,2个被提升为3是8,因此需要3个位。 000,001,010,011,1100,101,110,111是8个地址。
答案 2 :(得分:2)
1个字节= 8位,所以因为有4个字节和1个字节= 8个字位认为4字节x 8位= 32位是否正确?是答案???
不,那不是答案。如果你的计算机有64 MB的内存,每个字是4个字节,你的内存中有多少个字?您需要多少位来处理每个字(表示从0到字数的数字所需的位数 - 1)。
答案 3 :(得分:0)
公式为:
日志(内存大小/可寻址单元大小)/日志2
示例1: 要寻址16GBytes的存储器需要多少个地址位,每个可寻址单元的宽度为1个字节? Ans:log(16 * 1024 * 1024 * 1024/1)/ log2 = 34位
示例2: 要寻址16 GB的内存,每个可寻址单元为2字节宽,需要多少个地址位? Ans:log(16 * 1024 * 1024 * 1024/2)/ log2 = 33位
Example3: 需要多少个地址位来寻址64MBytes的存储器,其中每个可寻址单元的宽度为4个字节? 回答:log(64 * 1024 * 1024/4)/ log2 = 24位
Example3: 要寻址16MBytes的存储器需要多少个地址位,每个可寻址单元的宽度为1个字节? 回答:log(16 * 1024 * 1024/1)/ log2 = 24位