前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常用的进制

常用的进制

原创
作者头像
星辰大海c
发布2023-11-20 14:07:34
2611
发布2023-11-20 14:07:34
举报
文章被收录于专栏:前端学习教程

常用的进制

  • 2进制:0  1
  • 8进制:0~7
  • 10进制:0~9 (我们平时写代码,写出来的值都是10进制的)
  • 16进制:0~9  A-F
  • ....

如果我们写的值是以“0x”开头的,浏览器认为其是16进制,默认帮我们转换为10进制进行处理;如果写的值是以“0”开始的,浏览器认为其是8进制,也帮助我们默认转换为10进制,剩余写的值,都是按照10进制算的,但是不论咋样,计算机最后都是按照2进制进行存储。

JS使用number类型表示数字(整数和浮点数),遵循 IEEE-754 标准 通过64位二进制值来表示一个数字

代码语言:txt
复制
https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html
代码语言:txt
复制
第0位:符号位,0表示正数,1表示负数 S
代码语言:txt
复制
第1位到第11位「11位指数」:储存指数部分 E
代码语言:txt
复制
第12位到第63位「52位尾数」:储存小数部分(即有效数字)F
代码语言:txt
复制
注:尾数部分在规约形式下第一位默认为1(省略不写)

十进制decimal 转 二进制binary

整数转二进制

用十进制的值一直除以2,直到商为0结束,把每一次取到的余数,从末尾到开始串起来即可。

number.toString(radix); 把一个十进制数字转换为radix进制的字符串,如果不写radix,默认是10进制

浮点数转二进制

用十进制浮点数乘以2,每一次取整数部分,把剩下的小数部分继续乘以2...直到乘积是1,没有小数为止。

很多时候会出现无限循环,但是计算机存储二进制最长64位,超出的部分会自动去掉。换句话说,就是计算机底层储存的浮点数的二进制值不一定准确,有可能是省略后的结果。

有一个特例如下:

代码语言:txt
复制
console.log(0.1 + 0.2 == 0.3);//false

console.log(0.1+0.2);
//0.30000000000000004 != 0.3 因此fasle

console.log(0.1 + 0.3 == 0.4);//true

浏览器最多能储存16位十进制

上面例子的解决方法:浮点数转化为整数,即两个浮点数都乘以一个相同的系数,然后再除以这个系数

代码语言:txt
复制
console.log(((0.1*10) + (0.2*10))/10);

不同的进制转十进制

  • 二进制(0 1)转十进制
代码语言:txt
复制
  -   如:111011   `1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+1*2^0`
  • 八进制(0~7)转十进制
代码语言:txt
复制
  -   如:072         `0*8^2+7*8^1+2*8^0=58`
  • 十六进制(0~9 A~F)转十进制
代码语言:txt
复制
-   AF:1015
-   16进制数,一般会以’0x‘开头,如:0x16  `1*16^1+6*16^2=22`  0x只是一个标识
-   其他进制如3进制、4进制等转10进制计算方法与上述相同。
代码语言:txt
复制
我正在参与[2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!](https://cloud.tencent.com/developer/article/2352251)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用的进制
    • 十进制decimal 转 二进制binary
      • 整数转二进制
      • 浮点数转二进制
    • 不同的进制转十进制
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档