一
位操作符
位操作符使用整型的操作数,将整型看作是二进制位的集合,为每一位提供检验和设置的功能。整型即char或者int的数据类型,无论有没有short、long、long long、unsigned等限定词,建议使用unsigned整型操作数(位操作数为负数,则如何处理其符号位依赖于机器)。
移位操作: c语言提供一组移位运算,以便向左或者向右移动位的模式。其右操作数是要移动的位。这两种操作将其左操作数的各个位向左或向右移动若干位,从而产生新的值,并丢弃移出去的位。移位运算是从左到右可结合的。 向左移位: x<<k:表示x向左移动k位,丢弃最高的k位,并在右端补k个0。 向右移位: 一般而言机器支持两种形式的右移:逻辑右移和算术右移。 x>>k 逻辑右移:在左端补k个0。 算术右移:在左端补k个最高有效位的值。 c语言标准没有明确定义使用哪种类型的右移。对于无符号数据,右移必须是逻辑的;对于有符号数据(默认声明的整型对象),算数的逻辑的都可以。 二 逻辑运算符 c语言提供了一组逻辑运算符||、&&和!。 逻辑运算认为所有非零的参数都表示TRUE,而参数0表示FALSE。它们返回1或0,分别表述TRUE和FALSE。 位运算与逻辑运算区别: 1.按位运算只有在特殊情况下,也就是参数被限制为0或1时,才与逻辑运算有相同的行为。 2.如果对第一个参数求值就能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值。 |