Hinc lude <math. hx 第十章 tdefine EPs void main doub 户有定义函数原型说明 scan pI %f% doub In double term. while( fab n=n+1 信息科学技术学院C语言程序设计教学组
C Programming Language>第十章 第十章运犷 □★内容提要: 位逻辑运算 位逻辑运算 移位运算 移位运算 复合位运算 复合位运算 位段 >位段 US bctjiacusle, dll., 3
第十章 位运算 ★ 内容提要: 位逻辑运算 移位运算 复合位运算 位段 ➢ 位逻辑运算 ➢ 移位运算 ➢ 复合位运算 ➢ 位段
C Programming Language>第十章 位运算是指对操作数以二进制位(bit)为 单位进行数据加工。0语言的位运算功能有: ◎位逻辑运算(四种); ②位移操作(两种)。 参加位操作的操作数必须是整型常量或变量 US bajiao usle, oc
位运算是指对操作数以二进制位(bit)为 单位进行数据加工。C语言的位运算功能有: 位逻辑运算(四种); 位移操作(两种)。 参加位操作的操作数必须是整型常量或变量
C Programming Language>第十章 位逻辑运算: 位逻辑运算种类 运算符名称例子 功能 位反 求b的位反 & 位与 b&c求b和c的位与 1位或bc求b和c的位或 位异或b^c求b和的位异或 US bctjiacusle, dll., 3
一、位逻辑运算: 位 逻 辑 运 算 种 类 运算符 名 称 例 子 功 能 ~ 位反 ~ b 求b的位反 & 位与 b & c 求b和c的位与 | 位或 b | c 求b和c的位或 ^ 位异或 b ^ c 求b和c的位异或 运算符 名 称 例 子 功 能 ~ 位反 ~ b 求b的位反 & 位与 b & c 求b和c的位与 | 位或 b | c 求b和c的位或 ^ 位异或 b ^ c 求b和c的位异或 运算符 名 称 例 子 功 能 ~ 位反 ~ b 求b的位反 & 位与 b & c 求b和c的位与 | 位或 b | c 求b和c的位或 ^ 位异或 b ^ c 求b和c的位异或
C Programming Language>第十章 1.位反运算 位反运算是单项运算,它是把一个操作数按 位求反,即操作数的各个二进制位为时变换 为0,为0时变换成1 例[10-1]:将变量a按位求反赋予变量b。 void minot 设计 unsigned char a, b a=0x9a: b= a printf( a: 0x%x b: 0x%x\n", a, b) US bctjiacusle, dll., 3
1.位反运算 位反运算是单项运算,它是把一个操作数按 位求反,即操作数的各个二进制位为1时变换 为0,为0时变换成1。 例[10-1]:将变量a按位求反赋予变量b。 void main(){ unsigned char a, b; a=0x9a; b=~a; printf("a:0x%x b:0x%x\n",a,b); }
C Programming Language>第十章 void maino i 运行结果: unsigned char a, b a: 0x9a b: 0x65 a=0x9a: b= a printf ("a: 0x%x b: 0x%x\n", a, b) b01p口pn US bajiao usle, oc
void main(){ unsigned char a, b; a=0x9a; b=~a; printf("a:0x%x b:0x%x\n",a,b); } a 1 0 0 1 1 0 1 0 运行结果: a:0x9a b:0x65 b 0 1 1 0 0 1 0 1 b=~a b 0 1 1 0 0 1 0 1 b=~a
C Programming Language>第十章 2.位与、位或和位异或是对两个操作数的对 应二进制位进行运算。 位逻辑运算种类 a &b a位b位位与 b b 位或 位异或 0 0 0 0 0 1110 0 0 0 0 US bajiao usle, oc
2.位与、位或和位异或是对两个操作数的对 应二进制位进行运算。 a位 b位 a &b 位与 a|b 位或 a^b 位异或 1 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 0 a位 b位 a &b 位与 a|b 位或 a^b 位异或 1 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 0 a位 b位 a &b 位与 a|b 位或 a^b 位异或 1 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 0 位 逻 辑 运 算 种 类
C Programming Language>第十章 例[10-2]:位逻辑运算 void maino i 运行结果: unsigned char a, b a and b: 0x81 a and b: Obb a=Oxb9 a and b: 0x3a b=0x83 printf(a and b: 0x%x\n", a&b) 设计 printf("a and b: 0x%x\n", a b) printf("a and b: 0x%x\n", a b) US bctjiacusle, dll., 3
例[10-2]:位逻辑运算。 void main(){ unsigned char a, b; a=0xb9; b=0x83; printf("a and b:0x%x\n",a&b); printf("a and b:0x%x\n",a|b); printf("a and b:0x%x\n",a^b); } 运行结果: a and b:0x81 a and b:0xbb a and b:0x3a
C Programming Language>第十章 10111001a:b9 言a&b[1ooo0011b0x83 口■■■■■口口■国■■■口口■■国国口■口口国口■■■口口■■国国口■口口■口■国口口口■口国口口■ ■■■■■口■■ ■■■■■口■ 10o0001 结果:0x81 101 001a:0xb9 b 0000011b:0x83 ■■■■■■■■■■■■口■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 固■■■■■ 10111011结果0xbb US bctjiacusle, dll., 3
1 0 1 1 1 0 0 1 a:0xb9 a&b 1 0 0 0 0 0 1 1 b:0x83 1 0 0 0 0 0 0 1 结果:0x81 1 0 1 1 1 0 0 1 a:0xb9 a&b 1 0 0 0 0 0 1 1 b:0x83 1 0 0 0 0 0 0 1 结果:0x81 1 0 1 1 1 0 0 1 a:0xb9 a|b 1 0 0 0 0 0 1 1 b:0x83 1 0 1 1 1 0 1 1 结果:0xbb 1 0 1 1 1 0 0 1 a:0xb9 a|b 1 0 0 0 0 0 1 1 b:0x83 1 0 1 1 1 0 1 1 结果:0xbb
C Programming Language>第十章 10111001 a: 0xb9 a^b0000011b-0x83 口■■■口口口口■■口口■口口■口■国口■口口■国口■■口■口■■■口口■口■■■■口口■■■■口口口口■■■■口口口■■■口口口口■■口口■口口■口■ p0nn1o1结果:03 注意 对一个操作数的位运犷并不改变操作 数本身的数值。 US bajiao usle, oc
0 0 1 1 1 0 1 0 结果:0x3a 1 0 1 1 1 0 0 1 a:0xb9 a^b 1 0 0 0 0 0 1 1 b:0x83 注意: 对一个操作数的位运算并不改变操作 数本身的数值