设为首页 加入收藏

TOP

C/C++位操作初步(二)
2014-04-06 17:35:32 来源: 作者: 【 】 浏览:252
Tags:C/C ++位 操作 初步

 

  3、按位异或(^)

 

  按位“异或”运算 ^ 具有一些特殊的应用,介绍如下:

  ① 按位“异或”运算可以使特定的位取反

  例如:我们想让a数中的最低位和最高位取反,只要用0x81,即二进制数10000001去与它作按位“异或”运算,其运算结果同上式。经过操作后,最高位的值已经由1变0,而最低位的值也已经由0变1,起到了使这两位翻转的效果。其它位的状态保持不变。 可以看到,这个数除最低位、最高位为1外,其它各位均为0,操作的结果只会将a数中的第0、7位取反,而a数的其它位不受影响。也就是说,若需要某个数的第n位取反,只需要将该数与另一个数按位相“异或”,另一个数除了相应的第n位为1外,其它各位都为0,以起到对其它各位的屏蔽作用。上面的运算可以用a = a ^ (0x81) 来表示,也可以用a ^ =(0x81) 来表达。

  ② 直接交换两个变量的值

  例如,若有变量a = 3,b = 4,想要交换它们的值,可以做如下一组操作: a ^ = b b ^ = a a ^ = b

  首先,a ^ = b: a 0000 0011 ^ b 0000 0100 a = 0000 0111

  其次,b ^ = a: b 0000 0100 ^ a 0000 0111 b = 0000 0011

  最后,a ^ = b: a 0000 0111 ^ b 0000 0011 a = 0000 0100

  这样,a、b两个变量中的值就进行了对调。

  4、按位取非(~)

 

  5、左移操作(<<)与右移操作(>>)

  对于x,x<>n相当于x/(2^n)

  6、右移操作详解:

  右移操作相当的诡异,当一个变量进行右移操作,C语言需要填充左边空的比特位

  然而对于有符号变量,C使用符号位,如下表:

 

        

首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++中的Virtual Function&nb.. 下一篇LuaBridge为Lua绑定C/C++对象

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)
·C语言指针的定义和使 (2025-12-26 05:21:31)
·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)