文档详情

C语言程序设计与数据结构 刘信杰 C语言程序设计与数据结构 课件第11章新.ppt

发布:2015-12-16约字共25页下载文档
文本预览下载声明
C语言程序设计与数据结构 第十一章 位 运 算 总体要求: ?理解掌握位运算的六种位运算符及其使用方法 ?了解位段数据结构的定义及使用 学习重点: ?六种位运算的综合使用 11.1 位运算符概述 11.2 基本位运算符及其功能 11.3 位域(位段) 11.1 位运算符概述 ?所谓位运算是指对二进制位的运算,可以实现按位与、按 位或、按位异或、按位取反以及左移、右移等运算。 ?C语言提供了以下6种位运算符: 1) 按位与 2)| 按位或 3)∧ 按位异或 4) ~ 按位求反 5) 按位左移 6) 按位右移 ?位运算符除了~(按位求反)为单目运算符以外,其它均为双目运算符,即:要求位运算符两侧各有一个操作对象。 ?在C语言中,位运算的对象只能是整型或字符型数据,不能是其它类型的数据。 11.2 基本位运算符及其功能 ?11.2.1 按位与(&)运算符 ?11.2.2 按位或(|)运算符 ?11.2.3 按位异或(∧)运算符 ?11.2.4 取反(~)运算符 ?11.2.5 左移()运算符 ?11.2.6 右移()运算符 ?11.2.7 位运算的复合赋值运算符 ?11.2.9 位运算符的优先级 ?11.2.8不同长度的数据进行位运算 11.2.1 按位与(&)运算符 按位与运算符是双目运算符。当两个数值进行按位与运算时,是对其值的二进制表示形式逐位进行比较操作,如果两个值对应位上都是1,则该位取值1,否则取值0,其真值表见表11-1: 表11-1 按位与运算真值表 如有两个数4和8进行按位与运算,即4 & 8则可表示为: 0000 0100 & 0000 1000 0000 0000 结果为0。如果参加&运算的是负数(如-4-8),则以补码形式表示为二进制数,然后按位进行“与”运算。 下面介绍按位与(&)运算的应用: (1) 用于取一个数据的某些指定位。 (2) 将某个变量的值清零(所有二进制位全部为0),一种方法是将该变量与0进行按位与运算;另一种方法就是找到一个数x与该变量a进行“按位与”运算时,x应满足下面的特征:a的某个二进制位为0,则x相应的二进制位可以是0,也可以是1;a的某个二进制位为1,则x相应的二进制位必须是0。 (3) 用于保留一个数中某些指定位。方法是:取一个数x与该变量a“按位与”,对于在a中需要保留的二进制位,x中相应的二进制位应为1;其余位为0。 11.2.2 按位或(|)运算符 按位或运算符“|”是双目运算符。当两个数值作按位或运算时,是对其值的二进制表示形式逐位进行比较操作,如果两值对应位上两个都是0,则该位取值0,否则取值1,其真值表见表11-2: 表11-2 按位或运算真值表 如有两个数24和9进行按位或运算,即24 | 9,则可表示为: | 结果为25。 【例11.1】求0123 |026(即对八进制数123和八进制数26按位或的值。) 0000000001010011 | 0000000000010110 0000000001010111 得到的结果值为八进制数127,即:0123|026=0127。 按位或运算常用来对一个数据的某些位置1。方法是:找到一个数x与数据a进行“按位或”运算,数据a中哪一个二进制位希望变成1,则x中相应的二进制位置为1,其余为0。例如:如i|0377是将i的低8位置1,而高8位保留原值。 11.2.3 按位异或(∧)运算符 按位异或运算符“∧”是双目运算符。其功能是参与运算的两个数值对应位相异或,当两个数值对应位相异时,结果为1;否则结果为0。其真值表如表11-3所示。 表11-3 按位异或运算真值表 如有两个数24和9进行按位异或运算,即24 ∧9,则可表示为: ∧ 结果为17。 【例11.2】求0123∧026(即对八进制数123和八进制数26按位异或)的值。
显示全部
相似文档