- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
#includestdio.h
main()
{
intm,count,i,k;
printf(Inputm:);
scanf(%d,m);
count=0;
k=1;
for(i=0;i16;i++){
if((mk)!=0)
count++;
k=k1;
}
printf(Numbersof1inmis%d.\n,count);
}
程序运行结果:
Inputm:25↙
Numbersof1inmis3.
*第11章位运算11.1位运算符和位运算11.2位运算举例在计算机内部,数据是由二进制表示的。在一些系统软件中,常常需要对某些数据的二进制位进行处理,例如,对某些二进制位清0、将一个存储单元中的二进制位左移或右移等。
位运算指的是对数据按二进制位进行的各种运算。C语言提供了区别于其它高级语言的位运算,使程序员编写程序时可以对数据的二进制位进行控制和操作。这也是C语言与其它高级语言相比具有广泛的用途和很强生命力的原因所在。
C语言提供的位运算符有6个,它们分别是:(按位与)、|?(按位或)、^?(按位异或)、~?(按位取反)、?(左移)、?(右移)。其中?~?(按位取反)是单目运算符,其它均为双目运算符。
位运算的对象只能是整型数据和字符型数据,且以补码形式出现,其它类型的数据不能进行位运算。11.1位运算符和位运算1.?(按位与运算符)
按位与运算符()的运算规则是:参加运算的两个数据,如果两个相应的二进制位的值都为1,则该位的结果为1,否则为0。
例如,611的运算过程为(假设6和11分别用两个字节表示)
所以,611的运算结果为2。按位与运算通常用来将一个数据的某些位清0或保留某些位。
如果要将一个数据的某些位清0,而某些位保留,则只需让这个数据和这样一个数进行按位与运算即可,这个数的二进制位中要清0的位全为0,要保留的位全为1。
例如,将一个数X的低4位保留,其余位清0,则只需和15进行按位与运算即可。2.?|?(按位或运算符)
按位或运算符(?|?)的运算规则是:参加运算的两个数据,如果两个相应的二进制位的值都为0,则该位的结果为0,否则为1。
例如,6|11的运算过程为
所以,6|11的运算结果为15。按位或运算通常用来将一个数据的某些位置为1。
如果要将一个数据的某些位置1,则只需让这个数据和这样一个数进行按位或运算即可,这个数的二进制位中要置1的位全为1,其余的位全为0。
例如,将一个数X的低4位置1,其余位不变,则只需和15进行按位或运算即可。3.?^?(按位异或运算符)
按位异或运算符(^)的运算规则是:参加运算的两个数据,如果两个相应的二进制位的值相同(都为0或都为1),则该位的结果为0,否则为1。
例如,6^11的运算过程为
所以,6^11的运算结果为13。按位异或运算通常用来将一个数据的某些位翻转(0变为1,1变为0)或保留某些位。
如果要将一个数据的某些位翻转,则只需让这个数据和这样一个数进行按位异或运算即可,这个数的二进制位中要翻转的位全为1,其余的位全为0。
例如,将整数65的低8位翻转,高8位不变,则只需和255进行按位异或运算即可。
所以,整数65的低8位翻转、高8位不变的结果就是整数190。4.?~(按位取反运算符)
按位取反运算符(~)的运算规则是:参加运算的数据,如果二进制位的值为0,则该位的结果为1,否则为0。
例如,~6的运算过程为
所以,~6的运算结果为?-7。
按位取反运算通常用来将一个数据的所有位翻转(0变为1,1变为0)。5.??(左移运算符)
左移运算符()的运算规则是:将参加运算的数据的各二进制位全部左移指定的位数,左边(高位)移出的位舍弃,右边(低位)空出的位补0。
例如,a4就是将变量a的值的各二进制位左移4位。如果a的值为6,则其运算过程为
所以,a4的运算结果为96。如果左移出去被舍弃的二进制位中没有1,则左移1位相当于将该数乘以2,左移n位相当于将该数乘以2n(96就是6?×?24)。但是,如果左移出去被舍弃的二进制位中包含1,则不适用此规律。6.??(右移运算符)
右移运算符()的运算规则是:将参加运算的数据的各二进制位全部右移指定的位数,右边(低位)移出的位舍弃,左边(高位)空出的位根据以下两种情况补0或补1。
(1)对
文档评论(0)