JS 二進位制計算,如何得到乙個負數的二進位制表示

2021-08-01 16:26:37 字數 807 閱讀 2055

題目:輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示

收穫:

1.由負數的補碼求他的絕對值補碼:負二進位制數的絕對值,只要各位(包括符號位)取反,再加1,就得到其絕對值。

2.負數正碼取反(不包括符號位)+1即得到補碼表示

3.js中求二進位制,(number).tostring(2),負數和正數表示除了符號外相同。如(-123).tostring(2) == 『-1111011』, (123).tostring(2) == 『1111011』

原創:4.想得到負數n的二進位制表示即補碼, 對(array(32).join(「0」)+(-n-1).tostring(2)).slice(-32)按位取反;想得到正數n的二進位制表示,(array(32).join(「0」)+n.tostring(2)).slice(-32)即可,不用按位取反。

參考資料:

詳解正反補碼:

js二進位制運算

function

numberof1

(n)else

return cal(str);

}//計算1的個數

function

cal(str)

}return sum;

}//如果是負數,0變1,1變0

function

exchange

(str)else

}str = arr.join("");

return str;

}

1017 負二進位制轉換

題目描述 給出數字 n,返回由若干 0 和 1 組成的字串,該字串為 n 的負二進位制 base 2 表示。除非字串就是 0 否則返回的字串中不能含有前導零。示例 1 輸入 2 輸出 110 解釋 2 2 2 1 2 示例 2 輸入 3 輸出 111 解釋 2 2 2 1 2 0 3 示例 3 輸入...

5078 負二進位制數相加

給出基數為 2的兩個數arr1和arr2,返回兩數相加的結果。數字以陣列形式給出 陣列由若干 0 和 1 組成,按最高有效位到最低有效位的順序排列。例如,arr 1,1,0,1 表示數字 2 3 2 2 2 0 3。陣列形式的數字也同樣不含前導零 以arr為例,這意味著要麼arr 0 要麼arr 0...

1073 負二進位制數相加

class solution object def addnegabinary self,arr1,arr2 type arr1 list int type arr2 list int rtype list int d if arr1 0 sum1 0 else sum1 0 for i in ra...