操作符知识点笔记(上)

注意:接下来有关内容使用的是二进制

1. 操作符的分类

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

%是取余 eg:15%10=5

/是取整 eg:15/10=1

其他的正常类比数学

一.原码,反码,补码(整数的2进制)

符号位都是⽤0表⽰“正”,⽤1表⽰“负”。

最⾼位的1位是被当做符号位,剩余的都是数值位
eg:01000000000000000000000000000001中 最左边的1就是符号位

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

负整数的三种表⽰⽅法各不相同。

原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码.

反码:将原码的符号位不变,其他位依次按位取反就可以得到反码

补码:反码+1就得到补码
eg:5

原码:00000000000000000000000000000101

反码    01111111111111111111111111111010

补码    01111111111111111111111111111011

移位操作符::操作数只能是整数。

<<左移

规则:左边抛弃,右边补0

eg:10000000000000000000000000000001<<1

 ->    00000000000000000000000000000010

>>右移

规则:(看编译器)

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

     1. 逻辑右移:左边⽤0填充,右边丢弃

     2. (通常)算术右移:左边⽤原该值的符号位填充,右边丢弃

eg:-1

        10000000000000000000000000000001>>1

->     11000000000000000000000000000000

• 位操作符:(操作数必须为整数)

&与:有0则0,两个都为1就1  

eg:00000000000000000000000000001010

        011111111111111111111111111111110101

        00000000000000000000000000000001

|或  有1就为1,两个都0就0

^异或 两个相同为0,相异为1    这个可以支持交换律,并且不用担心溢出问题,因为他不存在进位

例子:不能创建临时变量(第三个变量),实现两个整数的交换。

int a = 10;【二进制:00000000000000000000000000001010】

int b = 20;【二进制:00000000000000000000000000010100】

a = a^b;     ----》        00000000000000000000000000011110----》为28赋值给a

b = a^b;     ----》        00000000000000000000000000001010----》为10赋值给b

a = a^b;    -----》        00000000000000000000000000010100----》为20赋值给a

【即完成了交换a=20,b=10】

• 赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^=

• 单⽬操作符: !、++、--、&、*、+、-、~ 、sizeof、(类型)

• 关系操作符: > 、>= 、< 、<= 、 == 、 !=

• 逗号表达式: ,

使用规则是:从左到右,整个表达式的结果是最后⼀个表达式的结果

• 下标引⽤: []

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

区分:int arr[10]中的[]表示的是大小

          arr[10]:中是下标引用操作符

            eg:3+5,+是操作符,3和5是操作数

• 函数调⽤: ()

eg:Add(3,5)中Add,3,5是操作数

9. 结构成员访问操作符

struct tag ----自定义

{

member-list;-----成员列表

 }variable-list;-----变量列表

注意:分号不能丢

使用时也要初始化一个值:eg:member-list p2={......},p2就是所说的初始化

10. 操作符的属性:优先级、结合性

结构体成员的直接访问是通过点操作符(.)访问的。点操作符接受两个操作数

eg: struct students

{

    int age;

double score;

};

int main()

{

struct students x1={18,99.9}

    printf("x: %d y: %d\n", x1.age,x1.score);

return 0;

}

优先级

圆括号( () )

• ⾃增运算符( ++ ),⾃减运算符( -- )

• 单⽬运算符( + 和 - )

• 乘法( * ),除法( / )

• 加法( + ),减法( - )

• 关系运算符( < 、 > 等)

• 赋值运算符( = )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值