本篇内容主要讲解“C语言位操作方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言位操作方法有哪些”吧!
站在用户的角度思考问题,与客户深入沟通,找到秀峰网站设计与秀峰网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟空间、企业邮箱。业务覆盖秀峰地区。位操作
位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算
比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常
与加法运算相同(仍然快于乘法运算)。
位运算符
取反(~)是一元运算符, 对一个二进制数的每一位执行逻辑反操作。使数字1成为0, 0成为1。
按位或(|) 处理两个长度相同的二进制数,两个相应的二进位中只要有一个为1,该位的结果值为1。
按位异或(^)是对等长二进制模式按位或二进制数的每一位执行逻辑异按位或操作,操作的结果是如果某位不同则该位为1,否则该位为0。
按位与(&)处理两个长度相同的二进制数,两个相应的二进位都为1,该位的结果值才为1,否则为0。
移位
移位是一个二元运算符,用来将一个二进制数中的每一位全部都向一个方向移动指定位,溢出的部分将被舍弃,而空缺的部分填入一定的值。在类C语言中,左移使用两个小于符号"<<"表示,右移使用两个大于符号">>"表示。
逻辑移位(不管是左移位还是右移位) 都是空缺处补0。
算术移位要保证符号位的不改变(逻辑左移位补0, 逻辑右移位看符号位)。
例如:110110011是-10110011前面的第一个1是符号位
那么110110011右移一位应该是111011001。
下面是一些位运算的简单编程题
不用额外变量交换两个整数的值
#includeusing namespace std; int fun1(int a,int b) { int tmp=a-b; tmp>>=(sizeof(int)*4-1); if(tmp) return b; return a; } int main() { int a=-134,b=98; cout<<"max:"< 2. 不用任何比较判断找出两个数中较大的数
#includeusing namespace std; void fun2(int &a,int &b) { a=a+b; b=a-b; a=a-b; } int main() { int a=-134,b=98; fun2(a,b); cout<<"a:"< 3. 整数的二进制表达式中的1的个数
#includeusing namespace std; int fun3(int a) { int tmp,count=0; for(int i=1;i<32;a>>=1,++i) { if(a&1==1) count++; } return count; } int main() { fun4(); cout< 4. 给定一个整数数组ar, 其中只有一个数出现了奇数次数,其他的数都是偶数词,打印这个数。
#includeusing namespace std; int fun4(int *ar,int n) { int tmp=0; for(int i=0;i 到此,相信大家对“C语言位操作方法有哪些”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章名称:C语言位操作方法有哪些-创新互联
文章地址:http://bzwzjz.com/article/dpjegh.html