博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Programming Clip】位运算的应用
阅读量:6243 次
发布时间:2019-06-22

本文共 1656 字,大约阅读时间需要 5 分钟。

1.用途

利用位运算,完成判断两个数字直接二进制的差异,数值交换,判断是否为2的次方,以及判断机器是SMALL_ENDIAN还是BIG_ENDIAN等。

2.描述语言

C++

3.原理

这个也没有什么原理,就是位运算,包括位移、与、或、异、取反或等。

4.代码

/* * ===================================================================================== *        Version:  1.0 *        Created:  01/09/2012 02:30:34 PM *       Revision:  none *       Compiler:  gcc/g++ * *         Author:  gnuhpc (http://www.cnblogs.com/gnuhpc), gnuhpc#gmail.com *        Company:  CMBC * * ===================================================================================== */#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;int bitDiff(int a,int b){ int result=0; for (int i = a^b;i!=0;i>>=1) { result+=i&1; } return result;}void swap(int& a, int& b){ if (a!=b) { a=a^b; b=a^b; a=a^b; }}bool judgepower2(int n){ return (n&(n-1))==0;}int ByteOrder(){ //return 0 for BIG_ENDIAN -- the most significant byte in the smallest address //return 1 for SMALL_ENDIAN-- the least significant byte in the smallest address short int word = 0x0001; char *byte = (char*) &word; return (byte[0]?1:0);}int main(){ int m = 12; //00001100 int n = 134;//10000110 cout << bitDiff(m,n) <

5.收获

1)在处理数值需要提高效率时可以从二进制的规律考虑,进行程序优化。

2)g++下,左移的规则是:向左移动,不管是否为符号位,丢弃最高位,低位补齐。左移一位相当于乘以2,由于int在C中是有符号的,最高位是符号位,0为正,1为负,所以左移可能产生溢出,即超过最大能表示的范围而变为了负值。

3)g++下,右移的规则是:向右移动,符号位正数补0负数补1(其实就是符号位不变),不存在溢出。

4)当位移的位数超过该数值类型的最大位数时,编译器会用位移位数去模类型的最大位数,然后按余数进行移位。

6.代码下载

本文转自gnuhpc博客园博客,原文链接:http://www.cnblogs.com/gnuhpc/archive/2012/01/09/2317369.html,如需转载请自行联系原作者

你可能感兴趣的文章
云计算在大数据形式下的发展
查看>>
如何更好地进行机房项目的控制成本
查看>>
爱立信高通中兴等成立Avanci专利授权平台 旨在加速物联网发展
查看>>
美情报公司:勒索病毒WannaCry的创作者可能是中国人
查看>>
华科技:以市场为导向 以用户体验为标准
查看>>
诺基亚携手Facebook联合开展跨大西洋现场测试
查看>>
如何检查MySQL数据库的主从延时?
查看>>
红炜:改变光伏电站融资难也需水到渠成
查看>>
三星用户迎利好 三星将推月度安全更新
查看>>
网络时代安全问题凸显 互联网金融如何有效避开痛点?
查看>>
移动OA如何治愈外出办公“焦虑症”?
查看>>
电信运营商解决方案
查看>>
日本显示屏公司的尴尬:夏普被收购 JDI也岌岌可危
查看>>
[MySQL 5.7]:binlog --statement
查看>>
MicroProfile变成了Eclipse MicroProfile
查看>>
中国电信10G PON演进研究成果卓著:为现网升级铺平道路 加速千兆时代到来
查看>>
家庭宽带市场竞争分析
查看>>
台媒:手机应用和免费wifi可瞬间泄露隐私
查看>>
QUnit单元测试文档
查看>>
手机网络电话(VOIP)大比拼
查看>>