
目录
1.算数 *** 作符
1.1 “ / ” *** 作符
注意:
1.2 “ % ” *** 作符
注意:
2.移位 *** 作符
2.1左移(<<)操作符
>) *** 作符"> 2.2右移(>>) *** 作符
注意:
3. 位运算符
补充:权重
3.1 按位与运算符(&)
3.2 按位或运算符(|)
3.3 按位异或运算符(^)
注意:
实例运用:
1.交换两个整型变量(不创建临时变量)
2.判断1的个数
3.找两个整数中不同的位数
4.赋值 *** 作符(=)
注意:
5.复合运算符
、< 、== 、<= 、>= 、!= )">6:关系 *** 作符(> 、< 、== 、<= 、>= 、!= )
7.逻辑 *** 作符
7.1逻辑与(&&) *** 作符
7.2逻辑或( || ) *** 作符
注意:
2. 注意区分逻辑 *** 作符和按位 *** 作符
实例:
1. 逻辑与的短路运算
2.逻辑或的短路运算
1.算数 *** 作符 1.1 “ / ” *** 作符
“ / ” *** 作符属于双目 *** 作符,用于求商
当两个 *** 作数均为整数且恰好可以除尽时,所得结果符合实际数学运算。
当两个 *** 作符均为整数且余数不为0时,所得结果为0向取整(取更接近于0的整数,即不进行四舍不入,直接舍掉小数)后的结果。
如(-5)/ 2 实际为(-2.5),零项取整发现(-2)更为接近0,结果为(-2),或直接舍掉小数位(0.5),取结果(-2)。
当 *** 作数有负数时,结果不受影响,符合实际正负逻辑(当然还符合零项取整):
注意:1.2 “ % ” *** 作符1.分母不能为0
2.整数除法余数不为0:在除的同时,就已经去掉了小数点,即整数运算后结果为已经零向取整后的结果,然后该结果才以浮点型存储到变量中,小数位全为0。
处理办法:将正数除法变为浮点数同整数的运算即可。
“ % ” *** 作符属于双目 *** 作符,进行取余运算
注意:“ % ” 只能用于整型 *** 作数,而不能进行浮点数的运算
当其中一个 *** 作数为负数时:
最后运算结果同第一个 *** 作数的正负号相同。
2.移位 *** 作符 2.1左移(<<)操作符当 *** 作数均为负数时:结果同样取第一个 *** 作数的符号。
左移后,左边最高位抛弃,右边最低位补0。
2.2右移(>>) *** 作符右移分为两种,一种是逻辑右移,一种是算数右移
算术移位:左边用该值得符号位填充,右边丢弃
逻辑移位:左边用0填充,右边丢弃
注意:结果为-1,因此我们可以发现该编译器进行右移运算采用的是算术右移,左边补符号位(符号位看自身类型,若为无符号数,补0,;若为有符号数且为负数,补1),右边丢弃。
3. 位运算符a:移位 *** 作数只能移位整型,左右 *** 作数均不可为浮点数。
b:移位运算符不能移动负数位,这种行为是标准未定义的
“ 位 ”指的是二进制位。
补充:权重3.1 按位与运算符(&)权重就是指所占的比重,如期末考试在总分上的占比。
如5——0000 0101 这8个bit位中,从右到左权重依次减小,即低位的权重小,高位的权重大。
如低位的1代表 1*(2^0) =1;而高位的1代表的则是 1*(2^2)=4.
“ & ”:相对应(权重相同)的二进制位若均为1,则结果为1,其它情况,结果均为0.
3.2 按位或运算符(|)“ | ”:相对应(权重相同)的二进制位若至少有一个为1,则结果为1,若均为0,则结果为0。
3.3 按位异或运算符(^)" ^ ":相对应(权重相同)的二进制位相同则结果为0,相异则结果为1.
如下:
注意:a^a = 0;
0^a = a;
如下:
实例运用: 1.交换两个整型变量(不创建临时变量) 2.判断1的个数
但很显然,上述方法对于有符号负数是不成立的,因为有符号负数右移采用的是算术移位,右边丢弃,左边补符号位,也就是1,如此while循环就会陷入死循环。
优化如下:
3.找两个整数中不同的位数 4.赋值 *** 作符(=)赋值 *** 作符相信大家都有所了解,不过多赘述。
注意:5.复合运算符1.赋值 *** 作符可以进行连等(链式赋值)
2.注意初始化和赋值的区别
初始化只能进行一次,会开辟空间。赋值能进行多次,只是修改原有空间里的值。
3.区分赋值(=)和等于(==)
(+= 、-= 、*= 、/= 、&= 、|= 、%= 、 >>= 、<<= 、^= ... )
6:关系 *** 作符(> 、< 、== 、<= 、>= 、!= )7.逻辑 *** 作符a:" != " 为不相等的判断
b:注意“==”与“=”区别
对逻辑结果进行 *** 作的 *** 作符。
7.1逻辑与(&&) *** 作符“ && ”,若两个 *** 作数结果均为真,则结果为真。
7.2逻辑或( || ) *** 作符“||”,若两个 *** 作数结果有一个为真,则结果为真;均为假,则结果为假。
注意:1. *** 作符的短路运算
“&&”两个从 *** 作数从左往右进行判断,若左边表达式结果为假,则不再进行右边表达式的判断,直接的出结果为假。
“||”中若左边结果为真,则不再执行右边表达式,得出总结果为真。
2. 注意区分逻辑 *** 作符和按位 *** 作符
按位 *** 作符是对二进制位的 *** 作,而逻辑 *** 作符是对逻辑结果的 *** 作
实例: 1. 逻辑与的短路运算 2.逻辑或的短路运算欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)