【计算机】第12章 位运算.pptVIP

  • 1
  • 0
  • 约1.63万字
  • 约 40页
  • 2018-02-26 发布于江苏
  • 举报
【计算机】第12章 位运算

第12章 位运算 学习目标: 掌握C语言中的位运算。 掌握六种位运算符: 按位与 | 按位或 ^ 按位异或 ~ 取反 左移 右移 理解位运算赋值运算符: =、|=、^=、=、=。 了解C语言中的一种特殊结构类型:位段类型。 为了节省内存空间,在系统软件中常将多个标志状态简单地组合在一起,存储到一个字节(或字)中。C语言是为研制系统软件而设计的,所以它提供了实现将标志状态从标志字节中分离出来的位运算功能。 所谓位运算是指,按二进制位进行的运算。 12.1 位运算和位运算符 前面介绍的各种运算都是以字节作为基本单位进行的。但在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能,这使得C语言也能像汇编语言一样用来编写系统程序。 Turbo C中按位运算符有: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ??????? 操作符?????????????????????? 作用 ───────────────────────────────── ????????? ??????????????????????? 位逻辑与 ????????? |??????????????????????? 位逻辑或 ????????? ^?????????????????????? 位逻辑异或 ????????? -??????????????????????? 位逻辑反 ????????? ???????????????????????? 右移 ????????? ???????????????????????? 左移 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字符型和整数型变量以及它们的变体, 对其它数据类型不适用。 关系运算和逻辑运算表达式的结果只能是1或0。而按位运算的结果可以取0 或1以外的值。 要注意区别按位运算符和逻辑运算符的不同, 例如, 若x=7, 则x8 的值为真(两个非零值相与仍为非零), 而x8的值为0。 移位运算符“”和“”是指将变量中的每一位向右或向左移动, 其通常形式为: ???? 右移:?? 变量名移位的位数 ???? 左移:?? 变量名移位的位数 经过移位后,一端的位被“挤掉”,而另一端空出的位用0填补,所以,Turbo C中的移位不是循环移动的。 说明: 1. 变量名x、y和“位数”等操作数,都只能是整型或字符型数据。除按位取反为单目运算符外,其余均为双目运算符。 2. 参与运算时,操作数x和y,都必须首先转换成二进制形式,然后再执行相应的按位运算。 例如,52=20:0101 → 10100,20 2=5:10100 → 00101。 3. 实现&、|、^运算主要用途的方法 (1)构造一个整数:该数在要取(或保留)的位、或要置1的位、或要翻转的位上为1,其余均为0。 (2)进行按位与、或按位或、或按位异或操作。 4.实现按位取反主要用途的方法 (1)求~0,间接地构造一个全1的数; (2)按需要进行左移或右移操作,构造出所需要的数。 12.1.1 按位与 本节介绍的是按位与运算符。按位与运算符是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。即 11=1;1 0=0;01=0;00=0; 此外,参与运算的数以补码方式出现。 例如:95并不等于14,应该是按位与。可如下计算: 9 = (9的二进制补码) () 5 = (5的二进制补码) (1的二进制补码) 所以,95=1。如果参加运算的是负数(如—9 —5),则以补码形式表示二进制数,然后按位进行“与”运算。 按位与运算有一些特殊的用途: 1.按位与运算通常用来对某些位清0。如果想将一个单元清零,即使其全部二进位为0,只要找一个二进制数,其中各个位符合以下条件:原来的数中为1的位,新数中相应位为0。然后使二者进行运算,即可达到清零目的。 例如:原有数另找一个数,并设它它符合以上条件,即在原数为1的位置上,它的位值均为0。将两个数进行运算: () 其道理是显然的。当然也可以不个数而用其它数(也可以,

文档评论(0)

1亿VIP精品文档

相关文档