我尝试将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
。我的错误在哪里?
答案 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)
表示基数/基数。