位運算子與其他

秋問發表於2021-03-06

0x00  前言

  ----萬般皆苦,唯有自渡;人生苦短,我亦朝陽

0x01  機器數--二進位制數

機器數 數字在計算機中的二進位制表示形式,且有對應的符號位
符號位 二進位制數的最高位(第一位),且正數為0,負數為1。如00000110為6,10000110為-6
機器的字長

 機器內部裝置一次能表示的二進位制位數。

8bit=1Byte,即,位元組的整數倍為字長,如8位、16位

真值

帶符號位的機器數對應的真正數值。

如二進位制數10000110的真值為為二進位制的-0000110,或十進位制的-6,而不是134

 

 0x02  原碼,反碼,補碼等

  概念 使用
原碼 符號位加上真值的絕對值 如-6的原碼為10000110,8的原碼為00001000
反碼

正數的反碼為其本身,即與原碼相同;

負數的反碼為原碼的基礎上, 符號位不變,其餘各位取反(0和1互變)

如-6的反碼為11111001;6的反碼還是00000110
補碼

正數的補碼為其本身,即與原碼相同;

負數的補碼為其反碼+1

數0的補碼錶示是唯一,即00000000

如-6的補碼為11111010;8的補碼還是00001000
總結

正數的原碼、反碼、補碼相同;負數的如上

 
負數的補碼轉十進位制

1、各位取反;2、轉十進位制;3、加符號,再-1

如11111010:1、00000101;    2、5;     3、-6

0x03  位運算子

表示式/宣告 二進位制數 備註
int a=6; 00000110 定義整型變數
int b=11; 00001011  
a&b 00000010 按位與。有0為0
a|b 00001111 按位或。有1為1
a^b 00001101 按位異或。不同為1
~a 11111001 取反。0和1互變
a>>2 00000001

a的二進位制數都向右移2位。低位捨棄,高位:

a為正數時,最高位補0

a為負數時,最高位看編譯系統是補0/1

a<<2 00011000 a的二進位制數都向左移2位。高位丟棄,低位補0

0x02  編外

  ----內容為本人查閱資料理解,如有侵權,請及時聯絡本人

 
 
 

相關文章