Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么23在二进制中等于10111?_Javascript_Binary - Fatal编程技术网

Javascript 为什么23在二进制中等于10111?

Javascript 为什么23在二进制中等于10111?,javascript,binary,Javascript,Binary,我尝试将23转换为二进制,并使用以下方法得出了数字100111: 剩下的是十进制的2,二进制的10。现在我写下号码: 10加上运算4,3,2,1中的位给了我 然而,答案是10111。我的错误在哪里?最后,你想要得到的是 23=16+4+2+1 = 1*16 + 0*8 + 1*4 + 1*2 + 1*1 = 1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 1*2^0 计算应如下所示: 23=2*11+1(第一个最低有效位为1) 11=2*5+1(第二个最低有效位为1) 5=2*

我尝试将23转换为二进制,并使用以下方法得出了数字
100111

剩下的是十进制的2,二进制的10。现在我写下号码:

10加上运算4,3,2,1中的位给了我
然而,答案是
10111
。我的错误在哪里?

最后,你想要得到的是

23=16+4+2+1
= 1*16 + 0*8 + 1*4 + 1*2 + 1*1
= 1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 1*2^0
计算应如下所示:

23=2*11+1(第一个最低有效位为1)
11=2*5+1(第二个最低有效位为1)
5=2*2+1(第三个最低有效位为1)
2=2*1+0(第四个最低有效位为0)
1=2*0+1(第五个最低有效位为1)
随附的十进制数
23
的二进制表示如下:

ex:  Convert 23 to a binary representation

23 / 2 = 11 R 1
11 / 2 = 5  R 1 
5  / 2 = 2  R 1
2  / 2 = 1  R 0
1  / 2 = 0  R 1

answer = 10111
正如你现在所拥有的

1) 23=22+1//找出最低有效位1

这一步是不必要的。你不需要先去掉奇数。只需按照链接中概述的步骤生成输出。这意味着,对十进制数输出执行的唯一操作是重复除以
2
,其余的数字表示二进制数


如果这不是编程问题,则应将其迁移到正确的论坛


如果您也想要一个JavaScript解决方案,因为您已经用JavaScript标记了这个问题,那么最简单的方法就是简单地执行
(N)。toString(2)
,其中
(N)
是您的十进制数,
。toString(2)
将您的数字转换为字符串形式的二进制表示形式。
2
表示基数/基数。

这听起来不像是编程问题。上次我检查时,
10/2=5
…这是一种非常奇怪的二进制计数方法…同意@ndugger。如果我是你,我会在每次迭代中减去最大的二进制数,直到你达到0。这将给出二进制表示法。
10111=(16*1)+(8*0)+(4*1)+(2*1)+(1*1)=23
thansk,我使用的是解释过的算法。你能详细说明一下你的计算是如何与这个算法相一致的吗?我所做的基本思想是
N
的base-b表示等于
N/b
的base-b重新输入,后面是最后一个数字,即
N%b
谢谢,根据我的探索,第五步是不必要的,因为我们可以从这个表达式
2*1+0
中提取两位
1
0
。我不希望在最后一步使用“特殊情况”。它产生了一个更简单的算法:)是的,我也决定坚持这种方法。谢谢你的贡献)谢谢,但这一步不正确。是正确的),因为我在这里只是把23表示为
(x(n)*2^n+…+x(1)*2^(1))+1*2^0
,其中部分
(x(n)*2^n+…+x(1)*2^(1))
表示22。然后我将这部分除以2,得到另一个接近2^0的系数。这很好,但是你必须理解,被刮除的
1
需要重新合并到最终结果中。按照链接中的示例,它的意思是
10110
+
00001
,即
10111
。请参阅我的问题解答
ex:  Convert 23 to a binary representation

23 / 2 = 11 R 1
11 / 2 = 5  R 1 
5  / 2 = 2  R 1
2  / 2 = 1  R 0
1  / 2 = 0  R 1

answer = 10111