天天看点

【Programming Clip】位运算的应用

1.用途

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

2.描述语言

C++

3.原理

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

4.代码

5.收获

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

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

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

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

6.代码下载

<a href="http://gnuhpc.googlecode.com/svn/trunk/CPPExClip/bitopeartion.cpp">http://gnuhpc.googlecode.com/svn/trunk/CPPExClip/bitopeartion.cpp</a>

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

继续阅读