操作符 一,算术操作符 重点/和% 注意: 1.%两个操作数必须是整形(其他的整形浮点型都可以),返回值是取余 2./两个操作数是整形的话,执行整数除法,得到的返回值是整形 3./两个操作数是浮点型的话,执行浮点数除法,得到的返回值是浮点型 二,移位操作符 尖尖往哪边,就往哪边移 (移动的是二进制位的补码) (计算机是以补码形式存储) 移动的必须是正整数 <<规则:基本上见到的是算术右移 正数的符号位为0 负数的符号位为1 如果移动的是正数,且数字未溢出的情况下 那么向右移动几位就是将该数除以2的几次方 左移规则<< 左边丢弃,右边补0 如果移动的是正数,且数字未溢出的情况下 那么向左移动几位就是将该数乘以2的几次方 注意:(编译器也不知道如何移动) 三,位操作符 两个操作数必须为整数 (移动的是二进制位的补码) (计算机是以补码形式存储) 按位与(&) 规则: (操作数)与(操作数) 1与1为1 0与1(或0)都为0 按位或(|) 规则: (操作数)或(操作数) 1或0(或1)都为1 0或0为0 按位异或(^) 规则: (操作数)异或(操作数) 相同为0 相反为1 练习: 利用临时变量tmp进行两数的交换 利用加减法进行两数的交换 思路: 此方法有缺陷: 利用异或操作符进行两数的交换 图解: 练习: 这样写有问题 当为负数时 思路: 一个数的二进制补码的每一位都按位与1 当这个数的这一位为0时按位与1为0 当这个数的这一位为1时按位与1为1 每一位进行按位与1 再count++ 一共有32bit位 这里必须循环32次的。 代码优化: 四,赋值操作符 变量在创建的时候赋值叫做变量的初始化 变量创建后,如果没有进行初始化,那么将在所申请的空间中储存随机值或0 变量在有值(随机值也算)的情况下进行赋值叫做变量的赋值 一个=为赋值操作符 两个==为判断相等的操作符 就是给内存空间放一个自己想要存储的值 例: 五,单目操作符 有一个操作数的叫做单目操作符 有几个操作数的就叫做几目操作符 !逻辑反操作符 非0为真,0为假 1一定为真但真不一定为1 !0默认为1 !真为假即为0 使用场景 当a为假时打印hehe 当a为真时打印hehe 负号(-) 正号(+)一般省略 取地址操作符(&) 解引用操作符(*) 根据指针变量p中存放的a的地址找到a *p就相当于a sizeof(计算变量所占内存空间的大小,单位是字节) 数组也是有类型的 (去掉数组名剩下的就是数组的类型) 如:char[10] sizeof 变量名可以省略括号 变量类型不能省略括号 强制类型转换只能由高到低 注意: 变量s还是short类型,所占空间还是2个字节 sizeof(内的表达式并不会真实进行运算的) 练习: 数组传递的是首元素的地址 是地址 4个字节 按位取反操作符(~) 使用场景: 只将二进制补码中第三位的0改为1 将第三位或上1,其他位或上0即可 即 这个数或4 即可 1向左移动两位这个数字就得到了4 将第三位还原为0 只需要第三位按位与0,其他位按位与0即可 下面那串数字按位取反得到上面那串数字 下面这串数字1>>右移2得到 ++操作符 --操作符 强制类型转换操作符() 注意: