请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于数字的二进制表示问题

大佬你好,我想请教一个问题。

  • 在 JavaScript 里,数字均为基于 IEEE 754 标准的双精度 64 位的浮点数,直观的图片比如这张:图片描述
  • 索引63是符号位,索引从0到51限制了精确度;
  • 我的问题是:假如声明一个正整数5,const num = 5;那这个5对应的二进制101在内存中的表示是什么样子的啊
  • 我的疑惑是,除了符号位,101只占3位就够了,那0到51中左侧剩下的其他位有值吗?
  • 大佬有空辛苦解答下

正在回答

1回答

提问很清晰,有图点赞。

这个问题学习到第三章就会理解的,这里可以简单说明一下。

浮点数由符号位、阶码、尾数三个部分组成的,也即是你图上不同颜色的三个部分。

对于num=5,尾数为101,阶码为0,符号位为0,所以完整的存储是这样的0000***00101(前面61个0),也即是即使没有使用,也是有值的。

0 回复 有任何疑惑可以回复我~
  • 哇,感谢感谢,回复的太及时啦!我好像明白了,其实场景是在使用JS的位运算,突然想到按位非是每一位取反,那前面那么多0都取成1,这数字得差成神马样儿?刚刚看了您的解答,去翻了按位操作的说明,发现JS按位操作符的操作数都会被转成补码形式的有符号32位整数,并非我想当然的对101直接取反,是这样对吗
    回复 有任何疑惑可以回复我~ 2020-02-12 16:08:05
  • 对,正数的补码就是原码。
    回复 有任何疑惑可以回复我~ 2020-02-12 16:12:19
  • 好的,万分感谢
    回复 有任何疑惑可以回复我~ 2020-02-12 16:13:13
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信