邏輯、位元、位移運算 (Logical, Bitwise, Shift)
邏輯、位元、位移運算 教學與筆記。
說明
常常會搞錯邏輯與位元運算兩者差別,初學時可要多注意。
邏輯運算:
反相:!
、且:&&
、或:||
位元運算:
NOT:!
、AND:&
、OR:|
、XOR:^
、補數:~
位移運算:
<<
、>>
邏輯運算 (Logical Operation)
<未完>
位元運算 (Bitwise Operation)
NOT:!
1 | int a = 0; // 0 |
AND:&
1 | int a = 20; // 10100 |
OR:|
1 | int a = 20; // 10100 |
XOR:^
奇數個 1 輸出為 1;偶數個 1 輸出為 0。
1 | int a = 20; // 10100 |
1 | int a = 0xFFAC874; // 1111 1111 1010 1100 1000 0111 0100 |
補數:~
1 | char a = 255; // 11111111 |
位移運算 (Shift Operation)
<<
:向左移位,a << n 即 a 向左移 n 個 bits,相當於乘以 2 的 n 次方。>>
:向右移位,a >> n 即 a 向右移 n 個 bits,相當於除以 2 的 n 次方。
左移運算:左邊被擠出去的位元會被丟棄,而右邊會補上 0。
右移運算:右邊被擠出去的位元會被丟棄,而左邊會補上 0。
1 | int a = 20; // 10100 |
邏輯、位元、位移運算 (Logical, Bitwise, Shift)