C

C语言-按位逻辑运算符和位移运算符

2018-09-27  本文已影响0人  Jimmy_L_Wang

按位逻辑运算符

& 逻辑与
| 逻辑或
^ 逻辑异或
~ 反码

a & b 两者都为1时结果为1;
a | b 只要有一个为1,结果就为1;
a ^ b 有且只有一个为1结果才为1;
~a 如果是0则结果为1,如果是1则结果为0;

这些运算符的操作数必须是整数类数据类型或者枚举型。如果应用于浮点型等数据类型的操作数,编译时就会出错。

逻辑运算符和按位逻辑运算符区别

&, |, ~运算符会根据1为真,0为假的规则对操作数的各二进制进行逻辑运算。
&&, ||, !运算符会根据非0为真,0为假的规则对操作数的值进行逻辑运算。

5 & 4 -> 4           5 && 4 -> 1

位移运算符

<<运算符 a << b 将a左移b位,右面空出的位用0填充。

a * 2^b

>>运算符 a >> b 将a右移b位

a / 2^b

当操作数是有符号整型的负数时,位移运算的结果因编译器而已。在许多编译器中,会执行逻辑位移(logical shift)算术位移(arithmetic shift)

无论采用哪种方法都会降低程序的可移植性,所以不要对负数进行位移

有符号整数的内部表示

用最高位表示数值的符号。

如果该数为负,则符号为1;
如果该数不为负,则符号为0;

上一篇 下一篇

猜你喜欢

热点阅读