無符号數
有符号數,有符号數的最常見的表示方法之一就算補碼
補碼的 最高有效位是符号位
正數的補碼是本身,負數的補碼是本身值每位求反最後加1
二進制的&與(都為真時為真) |或 (一個為真時為真)^異或(有一個為真,但兩個不相同時為真) ~取反(真時假,假時真)
-3 的16 進制 首先原碼為0011,假如是正數補碼等于原碼, 負數的求補碼,首先計算|-3|的原碼,然後再計算反碼(就是按二進制位取反),再在反碼的基礎上加1
正數補碼 是本身 ,負數補碼是絕對值按位取反碼再加1;豁然明朗,
再次總結下 無符号表示,有符号表示(一般最通常用的是補碼,或是反碼)
w位無符号 取值範圍0 ~ 2(w - 1) 1111 8 4 2 1 = 15 2(w) - 1
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 192 + 56 + 7 = 192 + 63 = 255 = 2(8) - 1 = 16 * 16 = 256 - 1 = 255
w位 無符号取值範圍 2(w) - 1
w位 有符号取值範圍-2(w - 1) ~ 2(w -1) - 1
w = 8
-2(8-1) ~ 2(8-1) - 1 = -2(7) ~ 2(7) - 1 = -128 ~ (128 - 1) = 128 ~ 127
補碼,反碼
有符号才反碼、補碼,反碼 + 1 = 補碼
有符号的 補碼是先通過絕對值的原碼 取反再 加 1
再加深下對二進制移位規則的回顧,左移x << k 丢棄最高的k個有效位,在右側尾部補充k個0
右移x >> k 邏輯移時 在左側補k個0
算符移位時在左側補k個移位數的最高有效位.