C语言:操作符详解(超详细的操作符详解)

孤独的纸鹤-落叶 2024-09-05 13:05:02 阅读 96

 

目录

操作符的分类

原码、反码、补码

符号位

移位操作符

左移操作符<<

右移操作符>>

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

按位与 &

按位或  | 

按位异或  ^

按位取反 ~

逗号表达式 ,


操作符的分类

算术操作符:+     -     *     /      %

逻辑操作符:  &&     ||      !、

移位操作符:<<     >>

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

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

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

条件操作符:   ?    :

逗号表达式: ,

下标引⽤: []

函数调⽤: ()

原码、反码、补码

原码、反码、补码:都是用二进制表示的

原码、反码、补码:有正数和负数

符号位

最⾼位的1位是被当做符号

位,剩余的都是数值位。

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

正数的符号位是 0

负数的符号位是 1

正数的原码、反码、补码都是一样的

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

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

反码:符号位不变,其他位按位取反,把0变1,把1变0

补码:反码+1就可以得到补码

数据存放内存中其实存放的是补码

为什么呢?

在计算机系统中,数值⼀律⽤补码来表⽰和存储。原因在于,使⽤补码,可以将符号位和数值域统⼀

处理;同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算

过程是相同的,不需要额外的硬件电路。

下面这代码的加法运算,是先把a和b原码转换成反码在进行加法运算,加完后在转换成原码进行输出,减法运算同理

移位操作

对于移位操作符不可移动负数,是错误的

int num = 10;

num>>-1; //error

左移操作符<<

左移操作符是左边丢弃,右边补0

右移操作符>>

右移操作符是右边丢弃,左边补符号位

操作符:&、|、^、~

&    //按位与

|     //按位或

^    //按位异或

~   //按位取反

按位与 &

按位与和逻辑与的原理一样

a和b的二进制对比2个1才为1,其他为0

按位或  | 

按位或和逻辑或的原理一样

a和b的二进制对比有1就为1

2个0才为0

按位异或  ^

按位异或是相异为1,相同为0

按位取反 ~

0的二进制位全是0,取反后是全1

-1也是一样


逗号表达式 ,

逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果。

逗号表达式是用,号隔开的

表达式,表达式,表达式........

我们可以看到1赋值给a ,a大于0,

a+b赋值给c,把c赋值给a和b,

逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。