算術運算子

正負操作

可以利用 +- 進行數值的正負操作。

#include <stdio.h>

int main()
{
    int n = 4;
    int m = -10;

    printf("%d", -n); // -4
    printf("%d", +m); // -10, 負正得負

    return 0;
}

五則運算

除了 +-*/ 之外,另有 % (mod,取餘數)運算。

#include <stdio.h>

int main()
{
    printf("%d", 5 + 2); // 7
    printf("%d", 4 - 3); // 1
    printf("%d", 8 * 9); // 72
    printf("%d", 10 / 5); // 2 
    printf("%d", 13 / 5); // 2, 無條件捨去至整數位
    printf("%d", 13 % 5); // 3

    return 0;
}

運算規則為「先乘除餘,後加減」及「由左至右」

#include <stdio.h>

int main()
{
    printf("%d", 5 + 4 * 3 / 6); // 7
}

可以利用 () 重新設定運算優先順序

#include <stdio.h>

int main()
{
    printf("%d", (5 + 5) * 3 / 6); // 5

    return 0;
}

位元運算

位元運算共有六種運算子:~ (NOT)、| (OR)、& (AND)、 ^ (XOR)、 >> (左移)、>> (右移)

NOT

NOT 運算相當於將所有位元反轉(0 => 11 => 0 ),意義上而言即為取該數的 1 補數

int main()
{
    char n = 0;     // 二進位:0000 0000
    char notN = ~n; // 二進位:1111 1111 => -1

    char m = 7;     // 二進位:0000 0111
    char notM = ~m; // 二進位:1111 1000 => -8
}

OR

OR 位元運算規則如下

0 1
0 0 1
1 1 1

當兩個 bit 皆為 0 時,結果為 0 ;反之結果為 1

int main()
{
    char n = 8; // 二進位:0000 1000
    char m = 6; // 二進位:0000 0110

    char nORm = n | m; // 二進位:0000 1110 => 14
}

AND

AND 位元運算規則如下

0 1
0 0 0
1 0 1

當兩個 bit 皆為 1 時,結果為 1 ;反之結果為 0

int main()
{
    char n = 7; // 二進位:0000 0111
    char m = 6; // 二進位:0000 0110

    char nANDm = n & m; // 二進位:0000 0110 => 6
}

results matching ""

    No results matching ""