美文网首页
位操作在编程中的应用

位操作在编程中的应用

作者: eesly_yuan | 来源:发表于2014-08-05 00:41 被阅读174次

本文内容来自位操作基础篇之位操作全面总结

  • 位操作包括:与(&)、或(|)、异或(^,异为1,同为0)、左移(<<,高位丢,底补0)、右移(>>)、非(~)
  • 编程中位操作常用的地方
1、判断基偶

根据末位决定 (a&1)==0为偶数

2、交换两数

a^=b;b^=a;a^=b;

3、变换符号

正负互换,只需要取反再加1

4、求绝对值

负数只需要求反加1即可,过程:先左移取符号,对int型有

int abs(int a)
{
int i = a>>31; 
return i==0?a:~a+1; // 或者 return ((a^i)-i);即取反加1的效果
}
5、高低位交换

对于无符号数short为例,左移8位,右移8位,取或即可

6、二进制逆序

归并交换实现

7、二进制中1的个数

第一步:每2位为一组,组内高低位相加
10 00 01 10 11 01 10 00
-->01 00 01 01 10 01 01 00
第二步:每4位为一组,组内高低位相加
0100 0101 1001 0100
-->0001 0010 0011 0001
第三步:每8位为一组,组内高低位相加
00010010 00110001
-->00000011 00000100
第四步:每16位为一组,组内高低位相加
00000011 00000100
-->00000000 00000111

    a = ((a & 0xAAAA) >> 1) + (a & 0x5555);  
    a = ((a & 0xCCCC) >> 2) + (a & 0x3333);  
    a = ((a & 0xF0F0) >> 4) + (a & 0x0F0F);  
    a = ((a & 0xFF00) >> 8) + (a & 0x00FF);   
8、缺失的数字

很多成对出现数字保存在磁盘文件中,注意成对的数字不一定是相邻的,如2, 3, 4, 3, 4, 2……,由于意外有一个数字消失了,如何尽快的找到是哪个数字消失了?
由于有一个数字消失了,那必定有一个数只出现一次而且其它数字都出现了偶数次。用搜索来做就没必要了,利用异或运算的两个特性——1.自己与自己异或结果为0,2.异或满足交换律。因此我们将这些数字全异或一遍,结果就一定是那个仅出现一个的那个数。


reference

位操作基础篇之位操作全面总结

相关文章

  • 位操作在编程中的应用

    本文内容来自位操作基础篇之位操作全面总结 位操作包括:与(&)、或(|)、异或(^,异为1,同为0)、左移(<<,...

  • 桌面应用软件开发语言调查

    版权所有,转载注明。 桌面应用软件,在操作系统中,通过操作系统桌面窗体展现应用内容,并实现用户交互操作。编程语言有...

  • 嵌入式寄存器位操作

    位操作 在嵌入式编程中,常常需要涉及到寄存器的位操作,使能某个功能,设置 gpio select, 配置外设等。 ...

  • 软件测试攻略(二十五):字符串处理

    字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作...

  • Java String 类

    字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作...

  • 关于String,你了解多少?

    字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作...

  • UNIX/Linux 体系结构

    了解UNIX/Linux 体系结构更有助与在Linux系统编程。 操作系统在计算机体系中的位置 操作系统位于应用程...

  • 网络复习-笔记04-Socket编程

    Socket编程—应用编程接口(API) 应用编程接口API:就是应用进程的控制权和操作系统的控制权进行转换的一个...

  • 设计模式入门:原型模式

    UML类图 代码示例   实际应用中,原型模式可以简单理解为克隆操作。在大多数面向对象编程语言中,实现克隆操作并不...

  • 3. 异步编程

    异步编程和同步编程有什么区别? 同步在执行某个操作时,应用程序的主线程必须等待操作执行完成后才能继续执行。 异步在...

网友评论

      本文标题:位操作在编程中的应用

      本文链接:https://www.haomeiwen.com/subject/qpcetttx.html