C位級運算基礎

2021-09-19 17:46:24 字數 865 閱讀 4519

無符號數

有符號數,有符號數的最常見的表示方法之一就算補碼

補碼的 最高有效位是符號位 

正數的補碼是本身,負數的補碼是本身值每位求反最後加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個移位數的最高有效位.

C語言基礎 位運算

start reading 作為乙個c語言的小白,位運算的重要性還不能深深地感受,不過等到以後接觸了linux,實行大小端轉換 就要運用到很多位運算,所以,位運算是非常重要的!位運算實際上就是二進位制的計算,下面我來介紹一下位運算的相關知識 按位取反 10 0000 1010 10 1111 010...

python位運算基礎

位與 位或 位異或 左移 右移 求反作用 按位操作,兩個對應的位都為1,則結果為1,有乙個為0,則結果為0 示例 10 20 0b01010 0b10100 00000 bin x 函式 將x轉換為二進位制的字串 ps 有點像數學中的 作用 按位操作,兩個對應的位只要有乙個為1,則結果為1,否則為0...

基礎語法 位運算

右移 二進位制資料向右移動 操作符 左移 二進位制資料向左移動 操作符 int a 1 int b a 1 左移1位 int c a 2 右移2位無符號數採用邏輯右移 移位和左邊補零 有符號數採用算術右移 移位和左邊補符號位 正數補0,負數補1 unsigned int a 0xffffffff i...