操作符

Posted hanwangyyds

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作符相关的知识,希望对你有一定的参考价值。

算术操作符

/除法表示商。  %取模表示商的余数


移位操作符

  • <<左移  左边舍去,右边添0

操作符_位取反

  • a<<2,表示向左移两位(将比特位形式的a进行移动) 如图
  • 操作符_位取反_02

  • 进行移位操作时,a本身的值不变,除非将值赋给a本身。
  • <<  >>左移和右移性质相同,在这里就不累述了、


位操作符

位操作符中的“位”依旧是二进制位 ,所以关于二进制位的转化

&  按位与   就是两个变量,输出的二进制位只要有一个为0(假),则按位与的结果就是假--------------与按位或相反

|    按位或    与按位与相反,输出的二进制位只要有一个是1(真),则输出结果就为真----------------按位或,货真价实,所以与真有关。只要有一个为真,就为真。

^  按位异或   对应的二进制位相同,则为0,对应的二进制位相反,就为真(1  )-------------------按位异或比上面两个多出一个字,所以比较麻烦,分为两步。若相同则为0,不同就为假

操作符_原码反码补码_03

单目 双目 三目操作符的区别:目 代表有几个操作数

比如:a+b就是双目操作符,因为有a b两个操作数


单目操作符

  • !逻辑反操作符 把真变为假,把假变为真。

操作符_原码反码补码_04

输出结果为1,把假 变为真

  • &取地址操作符,适用于指针
  • ~  对一个数的二进制进行按位取反 

例:如果对整形 int 0进行按位取反,输出结果是-1

  1. 原因:首先int 表示有符号的整形,相反unsigned int 表示无符号的整形,意味着没有正负之分。
  2. 所以当~作用于一个有符号整形,分正负的数字上时,一切都得小心!
  3. 第一位表示符号位,一为正,二为负。所以将0进行按位取反时,变成32个1,第一位表示符号位,即为负。
  4. 又有规定负数在内存中存储的时候,存储的是二进制的补码。意味着32个1是补码
  5. 又因为我们在使用或打印是,是这个数的原码。
  6. 这时我们就有必要进行先转换
  7. 原码反码补码
  8. 原码符号位不变,其余按位取反得到反码
  9. 反码最后一位加1得到补码。
  10. 任何整数存储的都是补码,反码只是中间计算的一个状态
  11. 正数的原码补码反码,三码相同

TIP:按位取反和原码得到反码的区别:

按位取反:全部取反。

反码:符号位不变,其余位取反


总结:当~出现在有符号位的变量上时,就要注意。按位取反得到的是补码,还需转换位原码!!!关键在于~按位取反一个有符号的整形!


++  --

前置和后置的区别

总结:不管前置或者后置,a都需要进行加减。但计算b时,若后置,则“后知后觉”,b不变;若前置,则与a相同!

操作符_原码反码补码_05

关系操作符

&&  逻辑与 

 ||  逻辑或     

重点落在逻辑二字,

逻辑与:二者只要有一个为假,输出结果就为假

逻辑或:二者只要有一个为真,结果就为真

&&与位操作符&的区别

本质就要回归定义。

&表示位操作符,是关于二者的二进制位;而逻辑操作符&&判断条件。


条件操作符/三目操作符

( a>b ?  a : b  )

操作符_操作符_06

流程:a>b吗?若大于,就输出A,若小于就输出B(括号内没有逗号!)



以上是关于操作符的主要内容,如果未能解决你的问题,请参考以下文章

java求余的数然后恢复

C++重载双目运算符

C++重载双目运算符

python表达式

c# 绘制正负坐标轴,代码怎么编写?最好详细点

OpenCV C++双目三维重建:双目摄像头实现双目测距