①自加自减运算
重点在区分表达式的值和变量的值。
~
1.自加运算
++在前,先变量+1,再表达式。
++在后,先表达式,再变量+1。
i=5
++i…i=6,++i=i=6。
i++…i++=i=5,i=6。
即i++的表达式不+1。
~
2.自减运算
--在前,先变量-1,再表达式。
--在后,先表达式,再变量-1。
i=5
--i…i=4,++i=i=4。
i--…i++=i=5,i=4。
即i--的表达式不-1。
~
②位运算
针对二进制的运算。
~
3.按位与(a&b)
相同位都为1则为1。
已知
=9
=5
求出
=1
~
4.按位或(a/b)
相同位只要有一个为1就为1。
已知
=9
=5
求出
=13
~
5.按位异或(a^b)
相同位不同时为1,相同时为0。
已知
=9
=5
求出
=12
~
6.左移(ab)
已知
=9
求出
=18
~
7.右移(ab)
已知
=9
求出
=4
~
8.按位取反(~a)
1变0,0变1
已知
=9
求出
=
注意:C语言中首位为1表示负数,此处只是二进制的结果,C语言结果见下。
~
③取反运算a=-(a+1)
9.正数取反
原码=9
补码(正数补码反码不变,9的储存)
取反
反码(补码-1,9取反)
原码=-10(负数以补码形式储存)
~
10.负数取反
原码=-9
反码(负数取反符号位不变)
补码(反码+1,-9的储存)
取反=8(-9取反)
原码=8(正数补码储存不变)