快捷搜索:  汽车  科技

c语言位运算与加法混合运算详解(C语言-自运算位运算)

c语言位运算与加法混合运算详解(C语言-自运算位运算)i …i =i=5 i=6。 i…i=6 i=i=6。 在前,先变量 1,再表达式。 在后,先表达式,再变量 1。i=5

c语言位运算与加法混合运算详解(C语言-自运算位运算)(1)

①自加自减运算

重点在区分表达式的值和变量的值。

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。

已知

00001001=9

00000101=5

求出

00000001=1

4.按位或(a/b)

相同位只要有一个为1就为1。

已知

00001001=9

00000101=5

求出

00001101=13

5.按位异或(a^b)

相同位不同时为1,相同时为0。

已知

00001001=9

00000101=5

求出

00001100=12

6.左移(a<<b)

已知

00001001=9

求出

00010010=18

7.右移(a>>b)

已知

00001001=9

求出

00000100=4

8.按位取反(~a)

1变0,0变1

已知

00001001=9

求出

11110110=246

注意:C语言中首位为1表示负数,此处246只是二进制的结果,C语言结果见下。

③取反运算a=-(a 1)

9.正数取反

原码00001001=9

补码00001001(正数补码反码不变,9的储存)

取反11110110

反码11110101(补码-1,9取反)

原码10001010=-10(负数以补码形式储存)

10.负数取反

原码10001001=-9

反码11110110(负数取反符号位不变)

补码11110111(反码 1,-9的储存)

取反00001000=8(-9取反)

原码00001000=8(正数补码储存不变)

猜您喜欢: