簡體   English   中英

在javascript中經歷位操作代碼中的無限循環

[英]Experiencing infinite loop in bits manipulation code in javascript

  • 我試圖用javascript解決位操作問題
  • 在這個問題中,給定一個輸入十進制數,轉換為二進制數,然后根據兩個條件操作位,在所有位置產生0位
  • 第一個條件,在每次迭代時LSB位被翻轉,如果從i + 1到位置末尾的位為零,則第i個位置的位值被翻轉
  • 在每個位操作操作中,計數器值遞增並且輸出返回計數器顯示用於二進制數的位操作操作的值
  • 在我的代碼中,我將十進制轉換為二進制數並為位操作操作編寫條件,但代碼經歷無限循環而不會結束
  • 你能讓我知道我弄錯了哪里,並幫助我解決你的建議問題
  • 提供以下代碼:

 var decimalNumber = 77; var binaryBit = solution(decimalNumber); console.log(binaryBit); function solution (decimalNumber){ var binary=[], i=0, j=0, binary_operations=0, binary_modified=[]; while(decimalNumber > 0){ binary[i] = (decimalNumber%2); decimalNumber = Math.floor(decimalNumber/2); i++; } console.log(binary); binary = binary.reverse(); console.log(binary); while(!binary.every(zeroCheck)){ //comBinaryOperation(binary); //} //function comBinaryOperation(binary){ //for(var j=0; j<binary.length; j++){ binary[binary.length-1] = (binary[binary.length-1] == 1) ? 0 : 1; binary_modified = binary.slice(j+1, binary.length); console.log(binary_modified); if(binary_modified.every(zeroCheck)){ binary[j] = (binary[j] == 1) ? 0 : 1; } binary_operations++;j++; if(j == binary.length-1){j=0;} /*while (binary.every(zeroCheck)){ break; }*/ } //} /*if(binary.includes(1,-4) ){ binary_bit = 1; }*/ console.log(binary); return binary_operations; } function zeroCheck(element){ return element == 0; } 

你的代碼進入無限循環,因為這時while(!binary.every(zeroCheck))是真的。 無限循環主要出現在while循環中, while(true)將進入無限循環。
嘗試將此行更改為!binary.every(zeroCheck)binary.every(zeroCheck)因為binary.every(zeroCheck)返回false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM