关于浮点数的移位操作

蒸米糕 2017-12-31 03:32:35
最近在学计算机组成原理,在算术移位这一节有这样一个问题
00.1010左移一位成为01.0100.若采用单符号位,且一位前绝对值已大于等于1/2,则左移后将溢出,因而是不允许的。如果采用双符号位,模等于4,则允许左移1位。
对于这句话前半句我的理解是左移相当于乘2,大于等于1/2的小数乘2就大于1了,所以溢出。但是我觉得这个理由不够全面。
换个方式思考:0.1010左移一位为0.0100,移位就是会改变数值,这样也可以表示,最终是因为没有达到乘2的目的,所以不允许吗?
而后半句读不懂,模等于4,是模2运算还是模几?
求大佬指教
...全文
2189 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjryym 2018-09-15
  • 打赏
  • 举报
回复
C库的 ldexp 函数,已经 x87 汇编的 fscale 指令,都是浮点数版的位移运算操作(本质就是对浮点数的指数位进行加减运算)。 ldexp(3.0, -1) // 这个就是把 3.0 右移 1 位,结果可以得到 1.5。
NANU-NANA 2018-01-02
  • 打赏
  • 举报
回复
都忘记了。。。。。。。。。
正怒月神 2018-01-02
  • 打赏
  • 举报
回复
浮点数也能移位运算了,看来我的知识太陈旧了。。。
luciferisnotsatan 2018-01-02
  • 打赏
  • 举报
回复
浮点数也能移位运算了,看来我的知识太陈旧了。。。
ChinaOS 2018-01-02
  • 打赏
  • 举报
回复
浮点数也能移位运算了,看来我的知识太陈旧了。。。

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧