操作符——算术操作符、移位操作符、位操作符

算术操作符:+、-、*、/、%;

注:% 操作符的两个操作数必须是整数。

移位操作符:<< 左移操作符、 >> 右移操作符。

int main()
{
    int a = 2;
    //把a的二进制位向左移动一位。
    int b = a >> 1;
    printf("%d", b);
    return 0;
}

a的二进制位:00000000000000000000000000000010;向左移动 一位后,最左边的0溢出,舍弃,最右边空缺一位补零,变成00000000000000000000000000000100;也就是b的值,换算成10进制等于4.

左移操作符特点:左边溢出的丢弃,右边补齐相应的零。

int main()
{
    int a = 10;
    //把a的二进制位向有移动一位。
    int b = a << 1;
    printf("%d", b);
    return 0;
}

右移操作分为算术右移和逻辑右移。对于算术右移,右边溢出的丢弃,左边补的是原符号位;而逻辑右移,右边溢出的丢弃,左边补的是0。

注:负整数在进行移位运算的时候使用的是补码,移位完成后,在根据得到的新的补码算出源码,得到结果。正整数的原反补码相同。无论是正数还是负数,进行移位运算后,不会改变原数,如上面代码中的a的值不会变,得到的只有b的值。

位操作符 “&”:按位与; “|”:按位或; “^”:按位异或。其中按位的“位”指的是二进制位,按照二进制的位来进行相应计算。位操作符的操作数必须是整数。

& 计算规则:有零为零,全一为一。

int main()
{
    int a = 3, b = 5, c;
    c = a & b;
    return 0;
}

a=3,二进制表示为:00000000000000000000000000000011,b=5,二进制表示为00000000000000000000000000000101;按位与之后得到00000000000000000000000000000001,结果是0。

| 计算规则:全零为零,有一为一。

^ 计算规则:相同为零,相异为一。所以两个相同的数异或得零,任何数字与零异或都得数字本身。

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务