美文网首页C
C语言-按位逻辑运算符和位移运算符

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

作者: Jimmy_L_Wang | 来源:发表于2018-09-27 09:32 被阅读0次

按位逻辑运算符

& 逻辑与
| 逻辑或
^ 逻辑异或
~ 反码
  • 按位与运算符(bitwise AND operator) a & b 按位计算a和b的逻辑与;
  • 按位或运算符(bitwise inclusive OR operator) a | b 按位计算a和b的逻辑或;
  • 按位异或运算符(bitwise exclusive OR operator) a ^ b 按位计算a和b的逻辑异或;
  • 按位反运算符(~operator) ~a 计算a的反码(将每一位取反之后的值);

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;

相关文章

  • 开发基础随笔之位运算符(Bitwise Operators)

    位运算符,属于算术运算符 按位逻辑运算符: 位移运算符: 位运算符的运算数只能是整数 位移运算符:按位左移 a<<...

  • 运算符

    在C语言中的运算符和我们平时用的基本上都差不多。运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运...

  • 16_位运算符分析

    关键词: C语言中的位运算符、 左移和右移注意点、位运算防错准则、 位运算符和逻辑运算符的区别 1. C语言中的位...

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

    按位逻辑运算符 按位与运算符(bitwise AND operator) a & b 按位计算a和b的逻辑与; 按...

  • 位运算

    运算符含义&按位与|按位或^按位异或~取反<<左位移>>右位移 按位与运算符(&)按位与运算将两个运算分量的对应位...

  • C语言中关于逗号运算符的理解

    在C语言中运算符有很多,包括算数运算符、关系运算符、赋值运算符、位运算符、逻辑运算符、三目运算符、sizeof运算...

  • 关于逗号运算符的理解

    在C语言中运算符有很多,包括算数运算符、关系运算符、赋值运算符、位运算符、逻辑运算符、三目运算符、sizeof运算...

  • 27、【Swift】高级运算符 - Advanced Opera

    Swift 运算符基本运算符高级运算符(包括 C 或 Objective-C 所有按位和移位运算符。) 与 C 的...

  • java中的运算符

    内容 算数运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 位移运算符 三元运算符java中的运算符,有以下几...

  • 第二十五章 高级运算符

    swift运算符和c++相同点 swift的位运算符和c的意义一样。 ~按位取反 &按位与 |按位或 ^按位异或 ...

网友评论

    本文标题:C语言-按位逻辑运算符和位移运算符

    本文链接:https://www.haomeiwen.com/subject/rjwsoftx.html