资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第十二章第十二章 位运算位运算 Focus掌握常见的位运掌握常见的位运算符和位运算算符和位运算六六 种种 位位 运运 算算 00001100| 00000101 00001101| 按位按位“或或” 12|5 =13 00001110 00000101 00001011 按位按位“异异或或” 125 =11 00000101 11111010 取反取反 char c=5; printf (“%d”, c); /*考虑补考虑补码码*/ & & 按位按位“与与” 12&5 =4000011000000010100000100 4种种字位逻辑运算符字位逻辑运算符具有逻辑运算的特点具有逻辑运算的特点5/26/20221 0 1 0 0 1 1 1 1 0 0 0 0 0 1 1 左左移移位(逻辑移位)位(逻辑移位) char c=5;c=c 右右移位移位 (算术移位)算术移位) 2种种字位移位运算符字位移位运算符具有移位的特点具有移位的特点位运算符和赋值运算符结合位运算符和赋值运算符结合可构成如下可构成如下复合赋值运算符复合赋值运算符 &=&=、|=|=、=、=、= =5/26/2022struct bitseg unsigned a: 2 ; unsigned b: 4 ; unsigned c: 6 ; unsigned d: 4 ; bits1 , bits2 ;位段(位域)位段(位域) 以以位位(bit)为单位的结构体为单位的结构体类型的类型的分量分量可以是可以是 int ,unsigned,signedabcd5/26/2022struct bitseg unsigned a: 2 ; unsigned b: 4 ; unsigned : 0 ; unsigned d: 4 ; bits ;ab空过空过d另起一字另起一字5/26/2022struct bitseg unsigned a: 2 ; unsigned b: 4 ; unsigned : 2 ; unsigned d: 4 ; bits ;空几位不用空几位不用ab空过空过d5/26/2022课堂例题课堂例题课后练习课后练习 编编程程思思路路:一一般般来来说说,要要判判断断一一个个数数的的奇奇偶偶,只只需需用用该该数数对对 2 进进行行求求模模 (%) 运运算算,若若结结果果为为 1 则则为为奇奇数数,结结果果为为 0 则则为为偶偶数数,但但如如果果用用位位运运算算则则速速度度会会更更快快。可可让让该该数数与与数数 1 进进行行与与运运算算&,奇奇数数的的最最低低位位为为 1 ,和和 1 与与的的结结果果为为 1 ,代代表表奇奇数数;偶偶数数最最低低位位为为 0 ,和和 1 与与的的结结果果为为 0 ,代代表表偶偶数数。由此可设计如下程序:由此可设计如下程序:判断数的奇偶性判断数的奇偶性#include main() int n; printf(Input integer:n ); scanf(%d ,&n); if(n&1) printf(%d is odd!n ,n); else printf(%d is even !n ,n); 编程思路:大小写字母的编程思路:大小写字母的ASCII码的码的差值为差值为 32=25=(100000),即,即 A +32= a, A: 01000001 a : 01100001 它们的差别在右起第它们的差别在右起第 6 位,在大写字母的该位,在大写字母的该位上置位上置 1 即变为对应的小写字母,在小写字母的即变为对应的小写字母,在小写字母的该位上置该位上置 0 则变为相应的大写字母。则变为相应的大写字母。利用位运算实现大小写字母的转换利用位运算实现大小写字母的转换#include main() int i;char c 80; printf(input a stringn ); scanf(%s ,c); for (i=0;i80;i+) if (A=ci&ci=Z) printf(“%c”,ci|32); else if(a=ci&ci=z) printf(“%c”,ci&0 xdf); if(ci=0) break; 注:注:0 0 xdfxdf=(=(dfdf) )1616=(11011111)=(11011111)2 2
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号