<script>
function calculate() {
var num = document.getElementById("decimal").value; //fetching binary value from html input box.
var bin = [];
while (num > 0) {
bin[bin.length] = num % 2;
num >>= 1; // basically /= 2 without remainder if any
}
document.getElementById("result").innerHTML = "Binary Value: " + bin.reverse().join('');
}
</script>
我试图理解这段代码,我无法理解这段代码中的这两行:
bin[bin.length] = num % 2;
num >>= 1;`
答案 0 :(得分:0)
bin[bin.length] = num % 2;
根据num是偶数还是奇数,在bin
附加0或1。
num >>= 1;
正如评论所说,这将num除以2而没有余数。总的来说,循环将num的二进制表示的数字放入bin中,从最低有效到最高。这就是为什么它在最后被逆转的原因。
答案 1 :(得分:0)
bin [bin.length]只是将被打包的数字(实际上是字符串)的索引。对于每个bin.reverse(),它递增1。 num是数字形式的数字。 num&gt;&gt; = 1只向右移1位数。这有一个影响,将小数乘以2. bin [bin.length] = num%2只是结果为0或1,并将每次添加到字符串以形成最终答案。 我不确定你哪个部分不明白。有些操作员还是整个逻辑?
答案 2 :(得分:0)
您想知道bin[bin.length] = ...
如何将值放在正确的位置。好吧,bin作为一个空数组(bin = []
)开始,其长度为0.所以bin[bin.length] = bin[0]
开始,第一件事就是在索引0处正确插入。
当事物插入到数组中时,内部维护此length
属性。因此它将始终插入第一个可用插槽。
示例:在索引0处添加了某些内容后,length
属性更新为1,下一次插入在bin[bin.length]
完成,相当于bin[1]
。