2025年8月11日 星期一

將數字(Number)強制顯示成 32 位元

 將數字(Number)強制顯示成 32 位元

前言

  最近需要把數字(Number)顯示成 32 位元,但發現只是透過進制轉換並不會顯示成 32 位元,它會依據數值大小來決定位元數,如果需要強制顯示成 32 位元該如何做呢?在此把學習的過程做個紀錄。


內容

  範例如下

let num = 5;
let negNum = -5;
console.log( num.toString(2) );//101
console.log( negNum.toString(2) );//-101
console.log( (num >>> 0).toString(2) );//101
console.log( (negNum >>> 0).toString(2) );//11111111111111111111111111111011
//
function ParseNumberToBinary32(num){
  let str = (num >>> 0).toString(2);
  return str.padStart( 32 , '0' );
}
console.log( ParseNumberToBinary32(num) );//00000000000000000000000000000101
console.log( ParseNumberToBinary32(negNum) );11111111111111111111111111111011


範例的前兩例示範只是透過進制轉換時顯示的結果,負數的顯示結果是詭異的負號加二進制數值,該如何正常顯示呢?透過 [ developer.mozilla.org ] Unsigned right shift (>>>) ,利用 >>> 位移 0 來取得結果,第三與第四例即結果,雖然負數顯示的結果正常了,但正數的位元數不足,富麗的最後透過 ParseNumberToBinary32() 來取得結果,可以已看到 ParseNumberToBinary32() 也是透過 >>> 位移 0 來處理,但最後會使用 padStrart() 來輸出,這是為了補足在數值是正數時會位元不足。

 

參考資料

[ developer.mozilla.org ] Unsigned right shift (>>>)


相關文章與資料

關於 JavaScript 的進制轉換


沒有留言:

張貼留言