C_语言位操作精辟总结.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言位操作 2009/12/16 TOC \o "1-3" \h \z \u 一、位的概念 2 二、位逻辑运算符 2 1、 & 操作符 3 (1)清除位:设置某位为0,而其他位保持不变。 3 (2)检测位 3 (3)保留变量的某一位 3 (4)与操作运算: 3 2、| 操作符 4 3、^ 操作符 4 (1)翻转某一位 4 (2)保留原值 5 (3)交换两个变量的值,而不用临时变量 5 4、 ~ 操作符 6 (1)设定某些位为0,其他的位为1,而不管这个数据的大小。 6 (2)联合使用&操作符确保某些位一定被置0: 7 三、位移运算符 8 1、左移运算符 8 2、 右移运算符 9 五、位运算赋值运算符 10 六、 不同长度的数据进行位运算 11 七、位域 11 八、c语言位操作的一些注意事项 12 1. 位操作尽量使用unsigned char 12 2. 每次操作最好用括号括起来,不要随意猜想其算术优先级 15 C语言是一种中级语言,能对计算机硬件直接操作,这就涉及到位的概念。十六进制使用四个二进制位来表示从0到15的数字,这些数字也是单个的十六进制阿拉伯数字所能表示的范围。由四个二进制位或一个BYTE的一半组成的组被称为一个元组。一个BYTE包含两个元组,所以我们可以使用两个十六进制阿拉伯数字来表示一个BYTE类型的值。 一、位的概念 我们知道,在计算机中,一字节占8位(现在的某些电脑也有占16位的),这样表示的数的范围为0-255,也11111111。位就是里面的0和1。 char c=100; 实际上c应该正好是64H。其中高位在前,低位在后。 二、位逻辑运算符 符号 描述 运算规则 & 位逻辑与 两个位都为1时,结果为1,否则为0; | 位逻辑或 两个位都为0时,结果为0,否则为1; ^ 位逻辑异或 当两个位相同时,结果为0,否则为1; ~ 取反 当为1时结果为0,当为0时,结果为1 表中除去最后一个运算符是单目运算符,其他都是双目运算符。这些运算符只能用于整型表达式。位逻辑运算符通常用于对整型变量进行位的设置、清零、取反、以及对某些选定的位进行检测。在程序中一般被程序员用来作为开关标志。较低层次的硬件设备驱动程序,经常需要对输入输出设备进行位操作。 1、 & 操作符 这个操作符理想的应用是建立一个掩码来检查某个位的值。 (1)清除位:设置某位为0,而其他位保持不变。 c=c&0xBF; 这样c以后,总能使第6位为0,其他位保持不变。 a=0xfe; //a=0b a=a&0x55;//使变量a的第1位、第3位、第5位、第7位清零 a= 0b (2)检测位 要知道一个变量中某一位是‘1’还是‘0’,可以使用与操作来实现。 a=0xf5; //a=0b result=a&0x08; //检测a的第三位,result=0 (3)保留变量的某一位 要屏蔽某一个变量的其它位,而保留某些位,也可以使用与操作来实现。 a=0x55; //a=0b a=a&0x0f; //将高四位清零,而保留低四位 a=0x05 (4)与操作运算: 那么如果参加运算的两个数为负数,又该如何算呢?会以其补码形式表示的二进制数来与运算。a=-5&-3; //a=(0b 1011) & (0b1101) =0b 1001 =-7 2、| 操作符 设置位:设置某位为1,而其他位保持不变,可以使用位逻辑或运算。 这个操作符的理想应用是确保某个位被设置。假设我们想某个值的位3一定被设置: BYTE b = 50; BYTE c = b | 0x04; cout << "c = " << c << endl; 这会发生如下的计算: b | ==result 3、^ 操作符 异或运算符^又被称为XOR运算符,比较两个数,只有这两个数的相应位标志不同时,返回数的相应位才会被设置1。 异或运算主要有以下几种应用: (1)翻转某一位 当一个位与‘1’作异或运算时结果就为此位翻转后的值。如下例: a=0x35; //a=0 a=a^0x0f; //a=0a的低

文档评论(0)

seunk + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档