第11章 位运算.pptx
《第11章 位运算.pptx》由会员分享,可在线阅读,更多相关《第11章 位运算.pptx(28页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、课程主讲人:第11章 位运算2 第 11章 位运算C语言程序设计第11章 位运算计算机教研室3 第 11章 位运算11.1 位运算符nC语言的位运算符分为两类,只有一个操作数的单目运算符和有左、右两个操作数的双目运算符,程序设计中常见的位运算符有6种,如表11-1所示。表11-1 C语言中的位运算符位运算符种类运算符含义应用形式运算功能优先级逻辑位运算按位取反aa按位取反14&按位与a&ba与b按位与8|按位或a|ba与b按位或6按位异或aba与b按位异或7移位位运算 按位左移a 按位右移b3b右移3位114 第 11章 位运算11.2 位运算程序中的所有数在计算机内存中都是以二进制的形式储存
2、的,连续的8个二进制构成一个字节,一个字节只能存储一个ASCII字符,不同数据类型的变量占用不同字节数的存储单元。位运算只能用于整型操作数,操作数的数据类型有char、short、int、long以及无符号的unsigned char、unsigned short、unsigned int、unsigned long类型。通常情况下,位运算的操作作用于unsigned类型的整数。逻辑位运算有四种:按位取反,按位与,按位或和按位异或。移位位运算有两种:按位左移,按位右移。5 第 11章 位运算11.2 位运算按位取反,这是一个单目运算符,用来对二进制的每一位取反,即将1变成0,将0变成1。例如,
3、下面的语句:int i=86printf(i=%dn,i);语句执行结果为:i=-87具体演算过程如下:i的值(86)10=(0000000001010110)2按位取反后i的值(86)102 按位取反后,最高位为1,表示为负数。计算机中负数是以补码的形式存放的,(11111111 10101001)2的补码为它的真值。补码反码+12+12 =(-87)10所以当int i=86时,2 =(-87)10按位取反运算11.2 位运算6 第 11章 位运算11.2 位运算例如,下面的语句:unsigned int i=86printf(i=%un,i);语句执行结果为:i=-65449具体演算过程
4、如下:i的值(86)10=(0000000001010110)2按位取反后i的值(86)102因为i为无符号型,所以i的值就是按位取反后的值:2=(65449)2按位取反运算11.2 位运算7 第 11章 位运算11.2 位运算【例11.1】阅读以下程序,了解不同类型的变量进行按位取反运算的规则。#include #include #include void main()inta=100,b=-100,c=32767,d=-32767;unsigned int e=100,f=0,g=65535;printf(a=%d,a=%dn,a,a);printf(b=%d,b=%dn,b,b);pri
5、ntf(c=%d,c=%dn,c,c);printf(d=%d,d=%dn,d,d);printf(e=%u,e=%un,e,e);printf(f=%u,f=%un,f,f);printf(g=%u,g=%un,g,g);按位取反运算11.2 位运算8 第 11章 位运算按位与运算,当两个操作对象二进制数的相同位都为1时,结果数值的相应位为1,否则相应位为0。其计算结果如表11-2所示。按位与运算位1位2表达式运算结果000&00010&10101&00111&11表11-2 按位与运算的结果11.2 位运算9 第 11章 位运算3.2 格式的输入/ 输出例如,对于如下语句:unsigned
6、 int a=146,b=222;printf(a&b=%un,a&b);语句执行结果为:a&b=146具体演算过程如下:a=(146)10=(0000000010010010)2,b=(222)10=(0000000011011110)2 0000000010010010 & 0000000011011110 a&b= 0000000010010010 所以a&b=(0000000010010010)2 =(146)10按位与运算11.2 位运算10 第 11章 位运算3.2 格式的输入/ 输出例如,对于如下语句:unsigned int a=146,b=222;printf(a&b=%un
7、,a&b);语句执行结果为:a&b=146具体演算过程如下:a=(146)10=(0000000010010010)2,b=(222)10=(0000000011011110)2 0000000010010010 & 0000000011011110 a&b= 0000000010010010 所以a&b=(0000000010010010)2 =(146)10按位与运算11.2 位运算11 第 11章 位运算3.2 格式的输入/ 输出例如,对于如下语句:unsigned int a=146,b=222;printf(a&b=%un,a&b);语句执行结果为:a&b=146如果将b的值取为负值
8、,int a=146,b=-222,则a&b的结果为2具体演算过程如下:a = ( 1 4 6 )1 0= ( 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 )2,b=(222)10=(0000000011011110)2 0000000010010010 & 0000000011011110 a&b= 0000000010010010 所以a&b=(0000000010010010)2 =(146)10按位与运算具体演算过程如下:b|原码=(-222)10b|补码=(-222)10那么a&b就成为: 0000000010010010 a&b= 000000000000001
9、0所以a&b=2。11.2 位运算12 第 11章 位运算3.2 格式的输入/ 输出【例11.2】编写程序,从键盘输入一个unsigned整型数,将数据低位字节的值取出来。#include void main()unsigned int a,b=255,c;printf(请输入变量a的值:);scanf(%u,&a);c=a&b;printf(%u&%u=%un,a,b,c);按位与运算11.2 位运算13 第 11章 位运算3.2 格式的输入/ 输出按位或运算,当两个操作对象二进制数的相同位都为0时,结果数值的相应位为0,否则相应位是1。其计算结果如表11-3所示。表11-3 按位或运算的结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第11章 位运算 11 运算
限制150内