【文档说明】C语言实例教程-位运算课件.ppt,共(21)页,1.798 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44601.html
以下为本文档部分文字说明:
位运算C语言标准输出函数只能将一个整数以10、8和16进制输出(使用%d、%o、%x),但是C语言没有二进制输出格式。之前我们也设计过一定的程序完成十进制与二进制、十六进制的转换,如何使用位操作实现将一个十进制转
换为二进制数。#include<stdio.h>main(){inti,bit;/*定义循环变量i和位1/0标志变量bit*/unsignedintn,mask;/*定义欲转换的整数n和屏蔽字变量mask*/mask=0x8000;/*初始屏蔽字1000,0000,0000,
0000,从左边最高位开始检查*/printf("Enterainteger:");scanf("%d",&n);/*输入要转换的整数*/printf("binaryof%uis:",n);for(i=0;i<16;i++)/*循环检查16位,并输
出结果*/{if(i%4==0&&i!=0)printf(",");/*习惯上二进制每4位用“,”分隔以便查看*/bit=(n&mask)?1:0;/*n&mask非0,该位为1;否则该位为:0*/printf("%1d",bit);/*输出1或0*/mask=mask>>1;/*右移1
位得到下一个屏蔽字*/}printf("\n");}设置一个屏蔽字,其中只有一个位为1,其余为0,为1的位为测试位置。将此屏蔽字与被转换数进行“位与”运算,根据运算结果判断被测试的位是1还是0。循环测试(一个整数2字节,16位,测试1
6次,从最高位开始测试,每次测试后屏蔽字右移1位以便测试下一个位)并输出的测试结果就是整数对应的二进制数。1.能够熟练位运算符的操作。2.培养数据检测与控制领域中的编程能力。位运算符1位运算符的运算功能2位运算C语言是为描述系统而设计的,因此它具有汇编语言所能完成的
一些功能。C语言既具有高级语言的特点,又具有低级语言的功能,因而具有广泛的用途和很强的生命力。第7章介绍的指针运算和本章将介绍的位运算就很适合于编写系统软件的需要,是C语言的重要特色。在计算机用于检测和控制领域中要用到位运算的知识,因此读者应该学习和掌握本
章的内容。10.1位运算符运算符含义优先级~按位求反1(高)<<左移2>>右移2&按位与3^按位异或4|按位或5(低)所谓位运算是指进行二进制位的运算。C语言中,位运算的对象只能是整型或字符型数据,不能是其他类型的数据。10.1位运
算符扩展运算符表达式等价的表达式<<=a<<=2a=a<<2>>=b>>=nb=b>>n&=a&=ba=a&b^=a^=ba=a^b|a|=ba=a|bC语言提供了六种运算符。只有求“反”运算符(~)为单目运算符,其余均为双目运算符。各双目运算符与赋值运算符结合
可以扩展的赋值运算符。10.2位运算符的运算与应用按位取反“~”是单目运算符,对一个二进制数的每一位都取反。例如:a=00011010(1A),~a=11100101(E5)。10.2位运算符的运算与应用左移运算符“<<”功能:将一个数的各个二进制位全部向左平移若干位(左边移出的部分忽略,右边补0
)。若a=15,即二进制数00001111,执行语句a=a<<2,左移2位得00111100,即十进制60。左移1位相当于该数乘以2,左移2位相当于该数乘以4.但此结论只适用于该数左移时被溢出舍弃的高位中部包含1的情况。例如:unsignedchara=26;/*(26)10=(000
1,1010)2=(1A)16*/a=a<<2;/*(0110,1000)2=(68)16=(104)10*/左移比乘法运算快得多,有些编译程序自动将乘以2的运算用左移一位来实现,将乘2n的幂运算处理为左移n位。10.2位运算符的运算与应用右移运算
符“>>”功能:将一个数的各个二进制位全部向右平移若干位(右边移出的部分忽略,右边对无符号数补0,有符号数补符号位)。每右移1位,相当于除2,左移n位相当于除2n。例如:unsignedchara=0x9A;/*(9A)16=(154)10=(1001,1
010)2*/a=a>>2;/*(0010,0110)2=(26)16=(38)10*/10.2位运算符的运算与应用将其两边数据对应的二进制位按位进行“与”运算。二者全为1结果为:1,否则为:0。例如:a=10111010(0xBA)b=01101110
(0x6E)a&b=00101010(0x2A)结论:“与1位与”为1,那么该位为1;“与1位与”为0,那么该位为0。“与1位与”可用于检测某个位是1还是0。10.2位运算符的运算与应用按位与的特殊用途123清零取一个数中某些指定位要想将哪一位保留
下来,就与一个数进行&运算,此数在该位取110.2位运算符的运算与应用将其两边数据对应的二进制位按位进行“或”运算。二者只要有一个为1结果为:1;否则为:0。(两者都为0时为0)。00101011(|)1001010010111111结论:与0“位或”为1,那么该位为
1;与0“位或”为0,那么该位为0。就是说任何位“与0位或”还是等于这一位(保持不变)。按位或运算常用来对一个数据的某些位定值为1。如a是一个整数(16位),有表达式a|0377,则低8位全值为1,高8位保留原样。10.2位运算符的运算与应用异或运算符^也称XOR运算符。
将其两边数据对应的二进制位按位进行“异或”运算,若二者相同,结果为0,若二者不同(相异),结果为1。00101011(^)1001011010111101结论:任何位“与1异或”,等价于对该位取反。10.2位运算符
的运算与应用(1)使特定位翻转假设有01111010,想使其低4位翻转,即1变为0,变为1,可以将它与00001111进行^运算,即01111010(^)0000111101110101结果值的低4位正好是原数低4位的翻转。要使哪几位翻转就将与其进行^运算的该几位置为1即可。10.2位
运算符的运算与应用(2)与0相^,保留原值如022^00=02200010010(^)000000000001001010.2位运算符的运算与应用(3)交换两个值,不用临时变量假如要将a和b的值交换,可以用以下赋值语句来实现:a=a^b;b=b^a;a=a^b;全国等
级C考试大纲本模块主要考查常用位运算符的使用。通过对历年试卷内容的分析,本章属于非重点考查内容。只要了解位运算符的基本概念及使用,掌握简单的位运算即可。此部分知识点多出现在笔试考核,上机试题中一般不会出现。1.位运算符的含义和使用。2.简单的位运算。C语言程序设计
案例引导教程不断学习,贵在坚持