如何编写一个在JS中打印整数位的程序

时间:2016-08-05 14:17:04

标签: javascript algorithm binary

如何编写打印出整数位的程序。 我正试图做那样的事情:

    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()这样的函数

2 个答案:

答案 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标准。

引自:http://www.w3schools.com/js/js_numbers.asp