精易论坛

标题: 关于 右移(,) 的讨论,到底是右移几位 [打印本页]

作者: xo37    时间: 2024-7-12 14:05
标题: 关于 右移(,) 的讨论,到底是右移几位
本帖最后由 xo37 于 2024-7-12 14:35 编辑

在  问答求助区 闲逛,偶然看了一个已经采纳了最佳答案且已闭帖的帖子,提问牵扯到右移(,);
最佳答案的回帖说右移(,)在易语言中按8位为单位进行的 —— 之前自己用右移(,)处理过数据,有点模糊的印象,这个是按位右移,不是按字节右移的;

于是,确认了下


好久不用C了,特意下载一个试了下,一样的啊……


确实是按位的,也就是说,如果是右移(A,1)对于偶数来说,某种程度上等价于 A÷2;感谢沙发 易友提醒;
位操作一般在单片机用的比较多吧?据说这样操作I/O速度快?
就事论事,只是勘误,不做人身攻击;

右移(欲移动的整数,欲移动的整数):将某整数的数据位右移指定位数,返回移动后的结果。本命令为中级命令。





作者: 7ian    时间: 2024-7-12 14:12
本帖最后由 7ian 于 2024-7-12 14:19 编辑

右移不是除以2,
3的二进制是11,右移一位就是1,

4二进制是100,右移一位是10等于2

你就理解,转成二进制后,右移几位就是把右边几位删掉

左移几位就是往右边补几个0

应用很广


作者: xo37    时间: 2024-7-12 14:38
7ian 发表于 2024-7-12 14:12
右移不是除以2,
3的二进制是11,右移一位就是1,

嗯,感谢提醒,【汗颜】 我这里的应用场景是用来替代÷2的,随手就写上,
作者: 神女软件定制    时间: 2024-7-12 14:41
7ian 发表于 2024-7-12 14:12
右移不是除以2,
3的二进制是11,右移一位就是1,

int(3)/2            
作者: 小白专家    时间: 2024-8-19 15:24
遇到同样问题,过来学习
作者: dnxl    时间: 2024-8-19 15:44
比如一个整数0x12345678 右移16位结果就是删除了0x5678变成0x00001234
汇编操作就是
mov eax,0x12345678
shr eax,,0x10
作者: qq977352880    时间: 2024-8-19 18:30
全都是大佬~

作者: 不离01    时间: 2025-6-10 23:19
感谢分享   66666




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4