We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于进制的转换,明明已经学会了,为啥有时候遇到一脸懵逼哦?比如遇到十进制的小数转换为二进制,是不是有点不知所措。
如果拿到一个数字52.52,那么Javascript中是如何转成二进制的呢?
主要方法:除二取余,逆序排列。 例如:52转成二进制,转换过程如下:
那么52转成二进制结果就是 110100。
主要方法:乘二取整,顺序排列。 例如:0.52转成二进制,转换过程如下:
在64位系统chrome中显示结果是 0.100001010001111010111000010100011110101110000101001,显然这个数是无限制循环的,而计算机是用二进制存储数字的,是采用国际标准IEEE 754的,位数有限所以就截断了,导致精度失准。具体移步另外一篇文章:JavaScript小数和大整数的精度问题
0.100001010001111010111000010100011110101110000101001
二进制整数转为十进制是从右到左分别乘上2的相应次平方,然后相加的和就是对应十进制的整数。如果首位是0,则表示正整数,首位是1则代表是个负数。正整数可以直接用上面规则换算,负整数则符号位取反,真值位需要减1取反码,然后计算对应的十进制数,然后合起来就是负数对应的十进制数。
例如:110100,转换的过程如下:
1 1 0 1 0 0 2^5 2^4 2^3 2^2 2^1 2^0 1*2^5+1*2^4+0*2^3+1*2^2+0*2^1+0*2^0 = 52
如果二进制负整数是 11101011,那么符号位取反 01101011,然后真值位减1取反 00010101,然后计算出对应十进制数 21,那么原来对应的十进制负整数是 -21。
小数点后面的按照从左到右分别乘以2的相应负数次平方,然后相加的和就是对应十进制的小数部分。
例如:0.110100,转换的过程如下:
0. 1 1 0 1 0 0 2^5 2^4 2^3 2^2 2^1 2^0 1*2^(-1)+1*2^(-2)+0*2^(-3)+1*2^(-4)+0*2^(-5)+0*2^(-6) = 0.8125
所以如果是小数的话,那就是整数部分和小数部分,分别按照对应的规则计算,相加就是要得结果。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
关于进制的转换,明明已经学会了,为啥有时候遇到一脸懵逼哦?比如遇到十进制的小数转换为二进制,是不是有点不知所措。
十进制转二进制
如果拿到一个数字52.52,那么Javascript中是如何转成二进制的呢?
主要方法:除二取余,逆序排列。
例如:52转成二进制,转换过程如下:
那么52转成二进制结果就是 110100。
主要方法:乘二取整,顺序排列。
例如:0.52转成二进制,转换过程如下:
在64位系统chrome中显示结果是
0.100001010001111010111000010100011110101110000101001
,显然这个数是无限制循环的,而计算机是用二进制存储数字的,是采用国际标准IEEE 754的,位数有限所以就截断了,导致精度失准。具体移步另外一篇文章:JavaScript小数和大整数的精度问题二进制转十进制
二进制整数转为十进制是从右到左分别乘上2的相应次平方,然后相加的和就是对应十进制的整数。如果首位是0,则表示正整数,首位是1则代表是个负数。正整数可以直接用上面规则换算,负整数则符号位取反,真值位需要减1取反码,然后计算对应的十进制数,然后合起来就是负数对应的十进制数。
例如:110100,转换的过程如下:
小数点后面的按照从左到右分别乘以2的相应负数次平方,然后相加的和就是对应十进制的小数部分。
例如:0.110100,转换的过程如下:
参考文档
The text was updated successfully, but these errors were encountered: