我之前看过这个问题,但我不明白答案。
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位数字。
答案 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