如何编写打印出整数位的程序。 我正试图做那样的事情:
function countBits(octet)
{
var i;
var c = "";
var k = "";
i = 128;
while (i > 0)
{
c = "";
if (octet < i)
{
c = '0';
i = i / 2;
k += c
}
else
{
c = '1';
k += c
octet = octet - i;
i = i / 2;
}
}
return k;
}
但如果我尝试用这个程序打印位,我有输出:
Input: 123
Output 01111011 and infinity numbers of zero
如何删除此错误?
P.S:我想仅使用循环和算法来执行此程序,而不是像(n >>> 0).toString(2);
或.map()
这样的函数
答案 0 :(得分:4)
您的变量i
总是大于0,因此while循环会一直运行。当你递减它时,你将它减半。这永远不会达到0,但它会达到小于1的值,此时你想要停止。
尝试使用while (i >= 1)
作为您的条件。
答案 1 :(得分:0)
所以我添加了一些日志来检查i的值,我在循环中得到了这个: 我= 64; i = 32; i = 16; ... i = 1; i = 0.5; i = 0.25
所以是的,为了使用另一个条件而做AgataB所说的,因为对于javascript, 1/2不给你0.
与许多其他编程语言不同,JavaScript没有定义 不同类型的数字,如整数,短整数,长整数,浮点数 等
JavaScript编号始终存储为双精度浮动 点数,遵循国际IEEE 754标准。