第九章其它C常用语法结构位运算位域联合枚举Typedef*预处理
❖ 位运算 ❖ 位域 ❖ 联合 ❖ 枚举 ❖Typedef ❖预处理 第九章 其它C常用语法结构
9.1位运算数字计算机中使用晶体管存储和处理状态,它只有打开和关闭两种状态,因此非常适合用二进制数码的组合(即1个和0)来表示信息。存储空间以字节为单位进行描述,字节一般由8个二进制位(bit)组成。其中最右边的比特位称为“最低位”,最左边的比特位称为“最高位”。每一个二进制位的值要么取0,要么取1。位运算是指对数据的二进制位进行的操作。在C语言中,位运算符有位逻辑运算符和移位运算符
9.1 位运算 数字计算机中使用晶体管存储和处理状态,它只有打开 和关闭两种状态,因此非常适合用二进制数码的组合(即1 和0)来表示信息。存储空间以字节为单位进行描述, 一个 字节一般由8个二进制位(bit)组成。其中最右边的比特位称 为“最低位”,最左边的比特位称为“最高位”。每一个二 进制位的值要么取0,要么取1。位运算是指对数据的二进制 位进行的操作。在C语言中,位运算符有位逻辑运算符和移位 运算符
位逻辑运算位逻辑运算符主要是处理数据的二进制位,C语言中,位逻辑运算符有4个:(1)“按位与”运算符&“按位与”运算符&是双目运算符,运算规则是:通过对两个操作数的补码逐位进行比较,只有两个对应位的二进制位都为1,则该位的结果才为1,否则为0。即:1&1=1,1&0=0,0&1=0,0&0=0(2)“按位或”运算符“按位或”运算符是双目运算符,运算规则是:通过对两个操作数的补码逐位进行比较,两个对应的二进制位只要有一个为1,则该位的结果为1,否则为0。即:1/0=1, 0/0=01/1=1, 0[1=1
位逻辑运算 位逻辑运算符主要是处理数据的二进制位,C语言中,位逻 辑运算符有4个: (1)“按位与”运算符& “按位与”运算符&是双目运算符,运算规则是:通过对两 个操作数的补码逐位进行比较,只有两个对应位的二进制位都 为1,则该位的结果才为1,否则为0。即: 1 & 1= 1, 1 & 0= 0, 0 & 1= 0, 0 & 0= 0 (2)“按位或”运算符| “按位或”运算符|是双目运算符,运算规则是:通过对两 个操作数的补码逐位进行比较,两个对应的二进制位只要有一 个为1,则该位的结果为1,否则为0。即: 1 | 1 = 1, 0 | 1 = 1, 1 | 0 = 1, 0 | 0 = 0
位逻辑运算(3)“按位异或”运算符^“按位异或”运算符人是双目运算符,运算规则是:通过对两个操作数的补码逐位进行比较,如果两个相应的二进制位相同,则该位的结果为0,否则为1。即1个1=000=0,1^0=1,0个1=1(4)“按位取反”运算符~“按位取反”运算符~是单目运算符,运算规则是:对操作数的补码每一位逐位取反,即该位为1,求反为0,反之亦然。即:1=0,~0=1
位逻辑运算 (3)“按位异或”运算符∧ “按位异或”运算符∧是双目运算符,运算规则是:通过 对两个操作数的补码逐位进行比较,如果两个相应的二进制位 相同,则该位的结果为0,否则为1。即: 1 ∧ 1 = 0,0 ∧ 0 = 0,1 ∧ 0 = 1,0 ∧ 1 = 1 (4)“按位取反”运算符~ “按位取反”运算符~是单目运算符,运算规则是:对操作 数的补码每一位逐位取反,即该位为1,求反为0,反之亦然。 即: ~1 = 0, ~0 = 1
位逻辑运算优先级与结合性位逻辑运算符的优先级基本处于关系运算符后面,逻辑运算符前面。但一是单目运算符,处于较高的第二优先级.和++是同一级。其余3个运算符的优先级从高到低依次是&、入、1,处于关系运算符与逻辑运算符之间。它们容易混淆,所以使用时建议加上括号。例如:x=(iΛj)l(m&n)一的结合性是从右到左,其他的三个运算符结合性是从左到右
位逻辑运算优先级与结合性 位逻辑运算符的优先级基本处于关系运算符后面,逻辑运 算符前面。但~是单目运算符,处于较高的第二优先级,和++是 同一级。其余3个运算符的优先级从高到低依次是&、∧、|,处 于关系运算符与逻辑运算符之间。它们容易混淆,所以使用时 建议加上括号。 例如: x = (i ∧ j)| (m & n) ~的结合性是从右到左,其他的三个运算符结合性是从左到右