为什么16位寄存器能存储2^16-1
这个公式是怎么得到的 那个减一是从2^16计算出来的值减一还是怎么样 求大牛详细解答 因为16个1就等于2^16-1啊,自己拿计算器按一下就知道了或者你这么推论吧:
一个1等于1,也就是2^1-1
两个1等于3,也就是2^2-1
三个1等于7,也就是2^3-1
...
可以得知全都是1的结果为2^(1的数量)-1
当然你也可以这么推
1b=10b-1
11b=100b-1
111b=1000b-1
...
111..(16个)...111=1000...(16个)...000-1
而1000...(16个)...000就是2^16 南郊居士 发表于 2015-6-6 10:11
因为16个1就等于2^16-1啊,自己拿计算器按一下就知道了
或者你这么推论吧:
那么那个减一有什么意思 wushaodong 发表于 2015-6-6 10:35
那么那个减一有什么意思
减一没什么意思,就好像3可以用4-1来表示是一样的
仅仅是个表示方式而已,这样表示比较简单
如果不这样表示,那么就只能用2^15+2^14+...+2^2+2^1+2^0或者16个1来表示了,你看看浪费多少篇幅 南郊居士 发表于 2015-6-6 10:42
减一没什么意思,就好像3可以用4-1来表示是一样的
仅仅是个表示方式而已,这样表示比较简单
:curse:减去1是因为计算机地址都是从0开始的。
首先,这个问题可以去问一下你的小学数学老师。
一位只有两种情况 0 和 1
16位就是 2^16 读作2的16次方
16位寄存器能储存 2^16 个不同的数。
还有一个数是0,所以实际范围是0~2^16-1 南郊居士 发表于 2015-6-6 10:42
减一没什么意思,就好像3可以用4-1来表示是一样的
仅仅是个表示方式而已,这样表示比较简单
这个公式不用死记硬背吧因为我还是理解不了 因为我刚接触汇编语言 无名侠 发表于 2015-6-6 14:41
首先,这个问题可以去问一下你的小学数学老师。
一位只有两种情况 0 和 1
16位就是 2^16 读作2的16次方
...
还有一个数是0就是因为计算机从0开始编址的吗 无名侠 发表于 2015-6-6 14:37
减去1是因为计算机地址都是从0开始的。
答非所问。人家问的是16位寄存器能存储最大的值,跟从几开始有什么关系 南郊居士 发表于 2015-6-6 19:43
答非所问。人家问的是16位寄存器能存储最大的值,跟从几开始有什么关系
0~15不是16位了么 怎么还需要减一 wushaodong 发表于 2015-6-6 19:07
这个公式不用死记硬背吧因为我还是理解不了 因为我刚接触汇编语言
假如你理解不了,最好记住
再说这个也没什么不好理解的,纯数学知识而已啊
我给你推导一下2^16-1是怎么得出的吧
16位寄存器最大可以表示全1的值,也就是16个1,换算为十进制(因为2^16-1本来就是十进制表示法)为:
SUM=2^0+2^1+2^2+...+2^15(楼主要是不明白这个,建议恶补基础知识,这个实在没得讲了)
将这个值乘以2,得出:
2*SUM=2^1+2^2+...+2^15+2^16
那么用下面这个式子减去上面那个式子,就得出了
2*SUM-SUM=SUM
=(2^1+2^2+...+2^15+2^16)-(2^0+2^1+2^2+...+2^15)
=2^16+(2^15-2^15)+...+(2^2-2^2)+(2^1-2^1)-2^0
=2^16-2^0
=2^16-1
我之前的那些回答是简化理解的说法,假如理解不了可以看纯数学推导,再理解不了就记住
这个公式可以推而广之,对于n位的寄存器,最大可表示2^n-1的数值 wushaodong 发表于 2015-6-6 19:53
0~15不是16位了么 怎么还需要减一
楼主你晕菜了吧,看我新回复 南郊居士 发表于 2015-6-6 19:59
假如你理解不了,最好记住
再说这个也没什么不好理解的,纯数学知识而已啊
这个跟握手问题一样。
小学老师讲过。
本帖最后由 南郊居士 于 2015-6-6 20:20 编辑
无名侠 发表于 2015-6-6 20:13
这个跟握手问题一样。
小学老师讲过。
旧问题还没解决,就别引入新问题了,这样更晕
而且用握手问题来解释完全是舍近求远,握手问题的公式是N*(N-1)/2 南郊居士 发表于 2015-6-6 19:59
假如你理解不了,最好记住
再说这个也没什么不好理解的,纯数学知识而已啊
你所说的基本知识是什么知识,看来我真的需要恶补一下 wushaodong 发表于 2015-6-6 20:28
你所说的基本知识是什么知识,看来我真的需要恶补一下
就是进制转换,不能再基础的基础了,假如楼主不会的话就先学这个,不会进制转换的话你可能连debug都不会用
反复看看我的回复,自己拿笔写写,用计算器按按
个人认为千万不要和“从0开始”之类的概念混淆,那是另外的问题(16位寄存器可以表示多少种数码),用来解释本帖的问题很牵强 本帖最后由 wushaodong 于 2015-6-6 20:58 编辑
南郊居士 发表于 2015-6-6 20:40
就是进制转换,不能再基础的基础了,假如楼主不会的话就先学这个,不会进制转换的话你可能连debug都不会 ...
我刚刚用计算器计算16个计算器 2^16 = 100000000000000000
计算5个寄存器(0~4) 2^5=100000
各减去一都变成我想要的结果如果不减一代表什么 wushaodong 发表于 2015-6-6 20:55
我刚刚用计算器计算16个计算器 2^16 = 100000000000000000
计算5个寄存器(0~4) 2^5=100000
2^16可以表示16位寄存器可以表示的数码数目。
我这么讲吧,今有数列如下:
0123456789
这个数列中最大的数是9,也就是减1的那个
这个数列中一共有10个数,也就是不减1的那个,即数码数目
假如每一个数码都可以对应一个地址,那么可以表示寻址能力。 南郊居士 发表于 2015-6-6 21:09
2^16可以表示16位寄存器可以表示的数码数目。
我这么讲吧,今有数列如下:
我似乎有点明白了,16就是数码数目 无实际意义 减去一才是求出最大值 2^16-1这个公式只能用在二进制那里这样理解有没有错误啊 wushaodong 发表于 2015-6-6 21:25
我似乎有点明白了,16就是数码数目 无实际意义 减去一才是求出最大值 2^16-1这个公式只能用在二进制那里...
2^16确实是数码数目,但是并不是无实际意义,不知道楼主有没有学到寻址,2^16是寻址能力的相关内容,也就是“可以表示多少种数码”
2^16-1(推广到2^N-1)只能用于计算二进制数码可以表示的最大值,不能计算其他进制,这一点是没错的
页:
[1]