从代码中获取二进制数

时间:2014-01-14 16:36:16

标签: javascript

我之前看过这个问题,但我不明白答案。

function (num, success) {
    if (true  && (num & Math.pow(2, 0)) != 0 && (num & Math.pow(2, 1)) != 0 && (num & Math.pow(2, 2)) == 0 && (num & Math.pow(2, 3)) != 0 && (num & Math.pow(2, 4)) != 0 && (num & Math.pow(2, 5)) == 0 && (num & Math.pow(2, 6)) == 0 && (num & Math.pow(2, 7)) != 0 && (num & Math.pow(2, 8)) == 0 && (num & Math.pow(2, 9)) != 0 && (num & Math.pow(2, 10)) != 0 && (num & Math.pow(2, 11)) == 0 && (num & Math.pow(2, 12)) == 0 && (num & Math.pow(2, 13)) != 0 && (num & Math.pow(2, 14)) == 0 && (num & Math.pow(2, 15)) == 0)

有人可以向我解释如何从这段代码中获取二进制值吗?

所以我可以把它变成一个4位数字。

1 个答案:

答案 0 :(得分:1)

这只是一个代码片段,而不是一个完整的函数,因为你没有返回任何东西,这只是if语句中的一个条件,但是,问题的精神是如何从该条件中获取二进制数。所以......

首先,您需要了解Math.pow函数的作用。Math.pow(2,0)将产生数字1,因为它是0的幂,或2 ^ 0。 Math.pow(2,1)为2,Math.pow(2,2)为4,依此类推。

好的,那么你怎么知道二进制数?二进制101是数字5,因为它是1*(2^2) + 0*(2^1) + 1*(2^0)。所以看一下条件:

num & Math.pow(2,0)将为1或0。因此,您需要将其与==!=进行比较才能找到,并使用AND运算符(&&)来确保它比较真/假结果。在上面的101例子中,由于以下条件,你需要为真:

(num & Math.pow(2, 2)) != 0 --->意思是1

&&

(num & Math.pow(2, 1)) == 0 --->意思是0

&&

(num & Math.pow(2, 0)) != 0 --->意思是1