鱼C论坛

 找回密码
 立即注册
查看: 5330|回复: 19

[汇编作业] 为什么16位寄存器能存储2^16-1

[复制链接]
发表于 2015-6-6 09:53:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个公式是怎么得到的 那个减一是从2^16计算出来的值减一还是怎么样 求大牛详细解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-6 10:11:38 | 显示全部楼层
因为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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-6 10:35:34 | 显示全部楼层
南郊居士 发表于 2015-6-6 10:11
因为16个1就等于2^16-1啊,自己拿计算器按一下就知道了

或者你这么推论吧:

那么那个减一有什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-6 10:42:22 | 显示全部楼层
wushaodong 发表于 2015-6-6 10:35
那么那个减一有什么意思


减一没什么意思,就好像3可以用4-1来表示是一样的

仅仅是个表示方式而已,这样表示比较简单
如果不这样表示,那么就只能用2^15+2^14+...+2^2+2^1+2^0或者16个1来表示了,你看看浪费多少篇幅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2015-6-6 14:37:23 | 显示全部楼层
南郊居士 发表于 2015-6-6 10:42
减一没什么意思,就好像3可以用4-1来表示是一样的

仅仅是个表示方式而已,这样表示比较简单

:curse:减去1是因为计算机地址都是从0开始的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-6 14:41:43 | 显示全部楼层
首先,这个问题可以去问一下你的小学数学老师。
一位只有两种情况 0 和 1
16位就是 2^16 读作2的16次方
16位寄存器能储存 2^16 个不同的数。
还有一个数是0,所以实际范围是0~2^16-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-6 19:07:33 | 显示全部楼层
南郊居士 发表于 2015-6-6 10:42
减一没什么意思,就好像3可以用4-1来表示是一样的

仅仅是个表示方式而已,这样表示比较简单

这个公式不用死记硬背吧  因为我还是理解不了 因为我刚接触汇编语言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-6 19:09:03 | 显示全部楼层
无名侠 发表于 2015-6-6 14:41
首先,这个问题可以去问一下你的小学数学老师。
一位只有两种情况 0 和 1
16位就是 2^16 读作2的16次方
...

还有一个数是0就是因为计算机从0开始编址的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-6 19:43:32 | 显示全部楼层
无名侠 发表于 2015-6-6 14:37
减去1是因为计算机地址都是从0开始的。

答非所问。人家问的是16位寄存器能存储最大的值,跟从几开始有什么关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-6 19:53:12 | 显示全部楼层
南郊居士 发表于 2015-6-6 19:43
答非所问。人家问的是16位寄存器能存储最大的值,跟从几开始有什么关系

0~15不是16位了么 怎么还需要减一
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-6 19:59:51 | 显示全部楼层
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的数值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-6 20:01:20 | 显示全部楼层
wushaodong 发表于 2015-6-6 19:53
0~15不是16位了么 怎么还需要减一

楼主你晕菜了吧,看我新回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-6 20:13:49 | 显示全部楼层
南郊居士 发表于 2015-6-6 19:59
假如你理解不了,最好记住

再说这个也没什么不好理解的,纯数学知识而已啊

这个跟握手问题一样。
小学老师讲过。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-6 20:17:41 | 显示全部楼层
本帖最后由 南郊居士 于 2015-6-6 20:20 编辑
无名侠 发表于 2015-6-6 20:13
这个跟握手问题一样。
小学老师讲过。


旧问题还没解决,就别引入新问题了,这样更晕
而且用握手问题来解释完全是舍近求远,握手问题的公式是N*(N-1)/2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-6 20:28:42 | 显示全部楼层
南郊居士 发表于 2015-6-6 19:59
假如你理解不了,最好记住

再说这个也没什么不好理解的,纯数学知识而已啊

你所说的基本知识是什么知识,看来我真的需要恶补一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-6 20:40:20 | 显示全部楼层
wushaodong 发表于 2015-6-6 20:28
你所说的基本知识是什么知识,看来我真的需要恶补一下

就是进制转换,不能再基础的基础了,假如楼主不会的话就先学这个,不会进制转换的话你可能连debug都不会用
反复看看我的回复,自己拿笔写写,用计算器按按

个人认为千万不要和“从0开始”之类的概念混淆,那是另外的问题(16位寄存器可以表示多少种数码),用来解释本帖的问题很牵强
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-6 20:55:15 | 显示全部楼层
本帖最后由 wushaodong 于 2015-6-6 20:58 编辑
南郊居士 发表于 2015-6-6 20:40
就是进制转换,不能再基础的基础了,假如楼主不会的话就先学这个,不会进制转换的话你可能连debug都不会 ...


我刚刚用计算器计算16个计算器 2^16 = 100000000000000000

计算5个寄存器(0~4) 2^5=100000

各减去一都变成我想要的结果  如果不减一代表什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-6 21:09:04 | 显示全部楼层
wushaodong 发表于 2015-6-6 20:55
我刚刚用计算器计算16个计算器 2^16 = 100000000000000000

计算5个寄存器(0~4) 2^5=100000

2^16可以表示16位寄存器可以表示的数码数目。

我这么讲吧,今有数列如下:
0  1  2  3  4  5  6  7  8  9
这个数列中最大的数是9,也就是减1的那个
这个数列中一共有10个数,也就是不减1的那个,即数码数目

假如每一个数码都可以对应一个地址,那么可以表示寻址能力。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-6-6 21:25:01 | 显示全部楼层
南郊居士 发表于 2015-6-6 21:09
2^16可以表示16位寄存器可以表示的数码数目。

我这么讲吧,今有数列如下:

我似乎有点明白了,16就是数码数目 无实际意义 减去一才是求出最大值 2^16-1这个公式只能用在二进制那里  这样理解有没有错误啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-6 21:35:04 | 显示全部楼层
wushaodong 发表于 2015-6-6 21:25
我似乎有点明白了,16就是数码数目 无实际意义 减去一才是求出最大值 2^16-1这个公式只能用在二进制那里  ...

2^16确实是数码数目,但是并不是无实际意义,不知道楼主有没有学到寻址,2^16是寻址能力的相关内容,也就是“可以表示多少种数码”

2^16-1(推广到2^N-1)只能用于计算二进制数码可以表示的最大值,不能计算其他进制,这一点是没错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-7 17:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表