操作符详解

一、操作符的分类

  • 算数操作符:+、-、*、/、%
  • 移位操作符:<<、>>
  • 位操作符:&、|、^
  • 赋值操作符:=、+=、-=、*=、%=、<<=、>>=、&=、|=、^=
  • 单目操作符:!、++、--、&、*、+、-、~、sizeof(无符号整型)、(类型)
  • 关系操作符:>、>=、<、<=、==、!=
  • 逻辑操作符:&&、||
  • 条件操作符:?、:
  • 逗号表达式:,
  • 下标引用:[]
  • 函数调用:()
  • 结构成员访问:. 、 ->

二、二进制和进制转换

68120e7b497c4086b0387213fc189713.png

1.2进制转10进制

下表则是关于10进制的图表

b72bedfd93cd41e3b64facc90e5ad878.png

而2进制和10进制也是类似的,只不过2进制的每一位权重,从右向左是:2^0,2^1,2^2…

2.10进制转2进制

2                                                   125     余数为1

     2                                                 62     余数为0    

          2                                             31     余数为1

               2                                        15     余数为1

                    2                                     7     余数为1

                         2                                3     余数为1

                              2                           1     余数为1

                                                            0

又下往上依次所得的余数就是10进制转换出的2进制

3.2进制转8进制

8进制的每一位数字都是0~7的

2进制0     11  0  10  1  1
8进制153

4.2进制转16进制

16进制的每一位数字都是0~9,a~f

2进制0 1 1 01 0 1 1
16进制6b

三、原码、反码、补码

整数的二进制表示方法有三种,即原码、反码、补码

二进制中最高位的1位被当做符号位,剩余都是数值位

0表示“正”,1表示“负”

正整数的原、反、补码都相同

负整数的三种表示方法都不同

  • 原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码
  • 反码:将原码的符号位置不变,其他位依次按位取反就可以得到反码
  • 补码:反码+1

补码得到原码也是可以用:取反,+1的操作

四、移位操作符

<<左移操作符

>>右移操作符

注:移位操作符的操作数只能是整数

1.左移操作符

左边抛弃,右边补零

#include"stdio.h"
int main()
{
    int num=10;
    int n=num<<1;
    printf("n=%d\n",n);
    printf("num=%d\n",num);
    return 0;
}

2.右移操作符

分为两种填充,右边抛弃:

  1. 逻辑右移:左边用零填充,右边抛弃
  2. 算数右移:左边用原该值的符号位

我们常用的VS编译器则是使用的算数右移

对于移位运算符,不要移动负数位,这是个标准未定义的。

1.int num = 10;
2.num>>-1;//error

五、位操作符:&、|、^、~

位操作符有:

1.  &  //按位与
    1&1=1
    1&0=0
    0&1=0
    0&0=0

2.  |  //按位或
    1|1=1
    1|0=1
    0|1=1
    0|0=0

3.  ^  //按位异或
    1^1=0
    1^0=1
    0^1=1
    0^0=0

4.  ~  //按位取反
    把操作数的每一位都取反

注:他们的操作数必须是整数。

六、单目操作符

单目操作符有这些:

!、++、--、&、*、+、-、~、sizeof、(类型)

单⽬操作符的特点是只有⼀个操作数。

七、逗号表达式

1  exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。

八、下标访问[ ]、函数调用()

1.[ ]下标引用操作符

操作数:一个数组名+一个索引值(下标)

1. int arr[10];//创建数组
2. arr[9] = 10;//实用下标引用操作符
3.[  ]的两个操作符是arr和9

2.函数调用操作符

接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值