关于C语言移位的问题 5

不理解《深入理解计算机系统》中的一段话:“对于一个由w位组成的数据类型,如果要移动k>=w位会得到什么结果呢?......C语言标准很小心地规避了说明在这种情况下该如何做... 不理解《深入理解计算机系统》中的一段话:
“对于一个由w位组成的数据类型,如果要移动k>=w位会得到什么结果呢?......C语言标准很小心地规避了说明在这种情况下该如何做。在许多机器上,当移动一个w位的值时,移位指令只考虑位移量的低log 2 w位(2是底数,格式不知道怎么打不出来),因此实际上位移量就是通过计算k mod w得到的。“

不理解的地方是:
①"移位指令只考虑位移量的低log 2 w位“,是什么意思?是不是说不管左移还是右移,都会从低log 2 w位开始?

②“当移动一个w位的值时,移位指令只考虑位移量的低log 2 w位”怎么推论出来“===>因此实际上位移量就是通过计算k mod w得到的。”?

财富值不多了,请大家谅解!
展开
 我来答
百度网友02bacfc
2015-12-21 · TA获得超过290个赞
知道答主
回答量:92
采纳率:100%
帮助的人:57.2万
展开全部
只考虑位移量的log2w的意思是,如果把位移量k换算成二进制的话,比如说,w为32,log2w就是5,k为32,换算成二进制就是100000,也就是只考虑后5位,这不就相当于k对m取余么,所以下面一句也就可以理解了。。我以为举个例子会比较好理解的。。下面还是附上我整个的思考逻辑吧。。

当移动一个w位的值时,移位指令只考虑位移量的低log 2 w位
c语言中规定的w位数一般为8、16、32、64。
假设k的低log 2 w位的值为u
那么高于log 2 w位的值显然都是w的倍数
k=n*w+u
其中n>=0,当n=0的时候,k<w,n>=1的时候,k>=m
所以k mod w = (n*w+u) mod w = u
Game结束
2023-01-03 · TA获得超过292个赞
知道答主
回答量:36
采纳率:0%
帮助的人:13.4万
展开全部

当移动一个ω位的值时,移位指令只考虑位移量的低log₂ ω位,因此实际上位移量就是通过计算k mod ω得到的。

移位指令只考虑位移量的低log₂ ω位,这句话指的是把位移量k看成二进制序列,然后只考虑该序列的低位,比如移动ω=32位的数据类型,位移量k为36时,实际上移位指令只需要考虑位移量(位移量36 = 100100),即100100这个序列的后五位,也就是00100,因此实际位移量就是4,和36mod32一致。

所以两个疑问就很好理解了:

①移动是从序列第一位开始,只是实际位移量把大于ω位的部分都舍去了

②为什么只需考虑位移量对应二进制序列的低log₂ ω位呢?因为假设你把32位的序列看成一个循环序列,移动32位正好一圈,所以只要你移动32的整数倍,那么都正好移动回原来的序列,这个过程和对32取模结果一样,所以又得出结论“实际上位移量就是通过计算k mod ω得到的”,也可以知道,这个值是一定小于ω的。

★容易误解的点在于这里所说的低log₂ ω位位移量k对应序列log₂ ω个低权位,和实际位移量或者位移位数并没有直接关系。36 = 100100,0 0 1 0 0是五个低权位(6个数位按权展开相加之和是36),而实际位移量并不是log₂ 32 = 5而是(00100)₂ = 4,但是有一点关系是确定的,实际位移量一定小于2^5 = 32位。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xgpppp920
2020-03-06
知道答主
回答量:1
采纳率:0%
帮助的人:647
展开全部
举个例子,比如k=33,w=32,那么k的二进制形式即为100001,k的低5(==log32)为不就是00001(即十进制的1)吗?使用这种方式计算,移1位。
而使用k mod w的方式计算,33 mod 32 得到 1,移1位。
两种方法计算得到的结果是统一的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-02-20
展开全部
如果是一个w位的二进制数,如果要移动k>=w位,移动多少位后面补多少0,所以结果为0
追问
谢谢你的解答。可是和文中的意思好像不同吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
那年那月1428
2021-07-11
知道答主
回答量:10
采纳率:0%
帮助的人:6535
展开全部
位移量k以2进制表示,低log 2 w 位刚好可以表示w位,多出来的超出了w位,是没有意义的,所以只取小于等于w位的数值,也就是k mod w
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式