位運算子和賦值運算子

2021-10-03 11:14:18 字數 1511 閱讀 9894

位運算只能對整數進行,可以是整數型變數也可以是被識別為整數型別的字面量。位運算是對該整數實際儲存的二進位制串的二進位制位進行操作,可以進行6種位運算:

運算子作用

&按位與

|按位或

^按位異或

~按位取反

<<

左移》右移位運算都不改變運算元本身的值,而是位運算表示式本身的值為進行位運算之後的值,例如:

char a =

0b00101101;

char b =

0b10100110;

char c = a & b;

// c == 0b00100100

char d = a | b;

// d == 0b10101111

char e = a ^ b;

// e == 0b00100100

char f =

~a;// f == 0b11010010

char g = a <<2;

// g == 0b10110100,低位補0

char h = a >>2;

// h == 0b00001011,高位補0

char gg = b <<2;

// gg == 0b10011000,低位補0

char hh = b >>2;

// hh == 0b11101001,高位補1

左移運算,低位一定補0。右移運算,如果是signed型別則補符號位,unsigned型別則補0,例如:

unsigned

char b =

0b10100110;

char hh = b >>2;

// hh == 0b00101001,高位補0

// 雖然b和上面的**中二進位制串相同,但這裡b被當作unsinged型別,補0而不是1

如果給出的移位位數為負數,不會反向移位,而是將此負數的二進位制串(實際為補碼)轉化為unsigned正整數再移動相應位數,例如:

unsigned

char b =

0b10100110;

char hh = b >>-2

;// -2的二進位制串為0xfe,對應unsigned整數為254即右移254位,最終結果為0b00000000

賦值運算子最簡單的就是"=",將右邊的值賦值給左邊的變數,或者用於初始化語句中。c/c++除了有最基本的賦值運算子之外還有擴充套件的賦值運算子:

=a = b

+=a = (a+b)

-=a = (a-b)

*=a = (a*b)

/=a = (a/b)

%=a = (a%b)

&=a = (a&b)

|=a = (a|b)

^=a = (a^b)

<<=

a = (a<>>=

a = (a<

賦值運算子的左側必須是可修改的值,也就是變數。對乙個常量使用賦值運算子則會報錯:不可修改的左值。

指標運算子和賦值運算子

取位址運算子,求得某個變數位址 指標運算子,求得所指位址的空間裡的值 c語言中,稱作賦值運算子,作用是將乙個數值賦給乙個變數或將乙個變數的值賦給另乙個變數,由賦值運算子組成的表示式稱為賦值表示式。簡單賦值 一般形式 變數名 表示式 注意 在程式中可以多次給乙個變數賦值,每賦一次值,與該變數相應的儲存...

JS運算子 算術運算子 比較運算子 賦值運算子

兩邊的變數都是number型別 則是單純的加法運算 當字串出現時 結果是字串型別 字串之後的內容 不論什麼型別 都會被作為字串進行拼接 例子 var num1 10 var num2 20 num num1 num2 var result num1 num2 num1 false console.l...

Python運算子 賦值運算子

賦值運算子與算數運算子有這個密不可分的關係,可以理解成是算數運算子在某種特定情況下的一種簡寫賦值運算子 說明舉例 展開形式 對應算數運算子寫法 簡單賦值運算子 x y x y 加賦值 也讀加等於 x y x x y 加賦值 也讀減等於 x y x x y 乘賦值 也讀乘等於 x y x x y 除賦...