原碼:機器碼
反碼:除符號位,各位取反
補碼:反碼加一(此時沒有符號位的概念,即符號位也參與運算)
例子:於是補碼的出現, 解決了0的符號以及兩個編碼的問題:
1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]補 + [1111 1111]補 = [0000 0000]補=[0000 0000]原這樣0用[0000 0000]表示, 而以前出現問題的-0則不存在了.而且可以用[1000 0000]表示-128:
(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]補 + [1000 0001]補 = [1000 0000]補-1-127的結果應該是-128, 在用補碼運算的結果中, [1000 0000]補 就是-128. 但是注意因為實際上是使用以前的-0的補碼來表示-128, 所以-128並沒有原碼和反碼表示.(對-128的補碼表示[1000 0000]補算出來的原碼是[0000 0000]原, 這是不正確的)使用補碼, 不僅僅修復了0的符號以及存在兩個編碼的問題, 而且還能夠多表示乙個最低數. 這就是為什麼8位二進位制, 使用原碼或反碼表示的範圍為[-127, +127], 而使用補碼表示的範圍為[-128, 127].
因為機器使用補碼, 所以對於程式設計中常用到的32位int型別, 可以表示範圍是: [-231, 231-1] 因為第一位表示的是符號位.而使用補碼表示時又可以多儲存乙個最小值.
負數取模:
原碼、反碼、補碼知識詳細講解(此作者是我找到的講的最細最明白的乙個)
3. deque 和 queue 的區別 (p172 && p174)
記錄劍指offer
1.四種與型別轉換相關的關鍵字 p23 type conversions 2.單例模式設計 p32 todo 單例模式設計 在真實的面試中有被問到過 餓漢式 多執行緒安全 餓漢式 在定義例項的時候就去new物件 以空間換時間 class csingleton private class garbag...
《劍指Offer》學習
1.賦值運算子過載函式的引數是函式所在類的const型別的引用 mystr operator const mystr str 賦值運算子 return this 1 加const是因為 2 用引用是因為 這樣可以避免在函式呼叫時對實參的一次拷貝,提高了效率。3 對於返回值 一般地,返回值是被賦值者的...
劍指offer學習記錄 前57題思路記錄
通過將值為i的元素調整到第i個位置上,如果對應位置已經有值為i的數字,則i值重複 使用二分法變體。通過統計陣列中i m範圍數字個數是否為m i 1判斷該範圍是否有重複數字。時間複雜度o nlogn 空間複雜度o 1 從右上角或者左下角開始找。右上角特徵 所在列的其他元素大於該數,所在行的元素小於該數...