把乙個數用二進位制形式表示,如果是正數,原碼就等於其二進位制數,如果是負數,最高位,也就是最左邊的那一位變成1
把乙個數表示成二進位制的時候注意,一定要比正常表示的二進位制多4位,用來標記是正數還是負數
比如:12可以表示成1100,但是寫的時候要比它多四位,也就是 0000 1100,最高位為0,表示為正,如果是-12,就是1000 1100
25可以表示成0001 1001,要比它多四位,所以寫成 0000 0001 1001,-25寫成 1000 0001 1001
如果是正數,補碼就等於其原碼
如果是負數,除了符號位,其它全部取反,然後得到乙個整數,再+1,轉換成二進位制,和原來的前四位的反碼組合,就是其補碼
比如:-12,原碼為1000 1100,全部取反,0111 0011,這個二進位制等於3,只計算後四位,前四位是表示是正數還是負數,不參與計算,3+1=4,表示成原碼,就是0111 0100
原碼左邊第一位,正數為0,負數為1
正數:先全部取反,然後求其補碼負數:先求其補碼,再全部取反
比如:12:原碼 0000 1100 全部取反 1111 0011,補碼:1000 1101 最高位為1 表示為負數,後四位計算為13,所以~12=-13
-12:原碼 1000 1100 補碼:1111 0100 全部取反 0000 1011 最高位為0 表示為正數,後四位計算為11,所以~-12=11
總結:正數和負數的取補,為其相反數減一
比如上面的~12=-13,~-12=11,可以求證 ~23=-24 ~-23=22
按要求補齊陣列
題目 給定乙個已排序的正整數陣列 nums,和乙個正整數 n 從 1,n 區間內選取任意個數字補充到 nums 中,使得 1,n 區間內的任何數字都可以用 nums 中某幾個數字的和來表示。請輸出滿足上述要求的最少需要補充的數字個數。示例 1 輸入 nums 1,3 n 6 輸出 1 解釋 根據 n...
29 按要求補齊陣列
給定乙個已排序的正整數陣列 nums,和乙個正整數 n 從 1,n 區間內選取任意個數字補充到 nums 中,使得 1,n 區間內的任何數字都可以用 nums 中某幾個數字的和來表示。請輸出滿足上述要求的最少需要補充的數字個數。示例 1 輸入 nums 1,3 n 6 輸出 1 解釋 根據 nums...
330 按要求補齊陣列
題目描述 給定乙個已排序的正整數陣列 nums,和乙個正整數 n 從 1,n 區間內選取任意個數字補充到 nums 中,使得 1,n 區間內的任何數字都可以用 nums 中某幾個數字的和來表示。請輸出滿足上述要求的最少需要補充的數字個數。示例 1 輸入 nums 1,3 n 6 輸出 1 解釋 根據...