为什么23等于二进制10111?

时间:2016-05-02 17:10:15

标签: javascript binary

我尝试将23转换为二进制文件,并使用the following process获得了数字100111

1) 23 = 22 + 1 // find out the least significant bit 1
2) 22/2 = 10 + 1 // next bit is 1
3) 10/2 = 4 + 1 // next bit is 1
4) 4/2 = 2 + 0 // next bit is 0

所以我留下了十进制的2,二进制是10。现在我写下这个号码:

10加上操作4,3,2,1中的位给了我 但是,100111,答案是10111。我的错误在哪里?

2 个答案:

答案 0 :(得分:1)

最后,你想得到的是

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 (1st least significant digit is 1)
11 = 2*5  + 1 (2nd least significant digit is 1)
5  = 2*2  + 1 (3rd least significant digit is 1)
2  = 2*1  + 0 (4th least significant digit is 0)
1  = 2*0  + 1 (5th least significant digit is 1)

答案 1 :(得分:1)

提供this method,十进制数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)是您的十进制数字{ {1}}以字符串形式将您的号码转换为您的号码的二进制表示。 .toString(2)表示基数/基数。