C 语言中操作符总结(上)

操作符构架图:

在这里插入图片描述

  1. 算数操作符

    常见的算术操作符:
    加(+)、减( - )、乘( * )、除( / )、取模( % )

    注意事项:
    1.1 取模( % ) 操作符不能作用于 浮点数外,其余的几个操作符可以作用于 整数 和 浮点数
    1.2 对于除( / )操作符,如果两个操作数都是 整数,则执行整数除法。而只要两个操作数中有 浮点数 ,那么就执行的是浮点数除法。
    1.3 取模( % ) 操作符作用的两个操作数 都 必须为 整数 。返回的是整除后的余数。即:% 只能对于整数取模!(如:9 % 3 == 0)(而:9.0 % 3 .0 == 0.0 是错误的)
    注:算术操作符的操作数为2

  2. 移位操作符
    移位操作 就是对操作数的二进制码进行左(右)移位操作

    常见的移位操作符:
    左移操作符( >> ) 、右移操作符( >> )

    左移操作符
    把 num左移 n 位:num << n;

    移位规则:
    左边抛弃,右边补0。
    如:在这里插入图片描述
    右移操作符
    把 num 右移 n 位:num >> n;

    移位规则:
    首先,右移运算分为两种:逻辑移位 和 算术移位。
    1、逻辑移位
    右边抛弃,左边补 0。
    如:在这里插入图片描述
    2、算术移位
    右边抛弃,左边用原该值的符号位填充。
    由于一个数可能是正数也可能是负数,所以在进行移位操作时一定要保持它的正负不变。
    这里我们必须知道:1. 数字在内存中的存储方式是以 二进制 的 补码 进行存储的,运算的时候也是用 补码 进行运算的。2. 正数的 原码 和 补码 相同,负数的 补码 是 原码除符号位以外的其他位按位取反再加 1 得到的。3. 正数符号位是0,负数符号位是 1。

    以右移一个负数为例:在这里插入图片描述
    总结:
    把一个数像左移动 n 位,相当于给这个数 乘以 2^n;
    把一个数向右移动 n 位,相当于给这个数 除以 2^n。

    警告!对于移位运算符,一定不要移动负数位,这个是标准未定义的。
    如:int num = 10; num >> -1; //是一个错误代码

  3. 位操作符
    按位与( & )、按位或( | )、按位异或( ^ )
    注: 他们的操作数必须是整数。

    运算法则:
    按位与( & ): 参加运算的两个数,按二进制位进行 “按位与” 运算
    0 & 0 = 0,0 & 1 = 0,1 & 0 = 0,1 & 1 = 1
    即:两位同时为 1 时,结果才为 1 ,否则结果为 0。

    按位或( | ): 参加运算的两个数,按二进制位进行 “按位或” 运算
    0 | 0 = 0,0 | 1 = 1,1 | 0 = 1,1 | 1 = 1
    即:两位同时为 0 时,结果才为 0 ,否则结果为 1。

    按位异或( ^ ): 参加运算的两个数,按二进制位进行 “按位异或”运算
    0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 1
    即:两位相同时异或结果为 1,两位结果不相同时异或结果为 0。

  4. 赋值操作符( = )
    简单的说就是可以给自己重新赋一个自己满意的值。

    复合赋值
    常见的复合赋值操作符:
    += 例:a = a + 10,就相当于 a += 10;
    -= 例:a = a - 10 ,就相当于 a -= 10;
    *= 例:a = a * 10,就相当于 a *= 10;
    /= 例:a = a / 10,就相当于 a /= 10;
    %= 例:a = a % 10,就相当于 a %= 10;
    &= 例:a = a & 10,就相当于 a &= 10;
    |= 例:a = a | 10,就相当于 a |= 10;
    ^= 例:a = a ^ 10,就相当于 a ^= 10;

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值