码迷,mamicode.com
首页 > 其他好文 > 详细

位运算

时间:2018-12-12 21:31:26      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:分享   注意   方法   .com   auto   ima   运算符和   进制   加密算   

1.概念

  位运算是指按二进制位进行的运算。因为在系统软件中,常要处理二进制位的问题。例如:将一个存储单元中的各二进制位左移或右移一位,两个数按位相加等。C语言提供位运算的功能,与其他高级语言(如PASCAL)相比,具有很大的优越性。

2.位运算符和位运算

技术分享图片

  (1)位运算符中除~以外,均为二目(元)运算符,即要求两侧各有一个运算量。

  (2)运算量只能是整型或字符型的数据,不能为实型数据。

3.“按位与”运算符(&)

  含义:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。

  例如:0&0=0,0&1=0,1&0=0,1&1=1

  注意:3&5并不等于8,应该是按位与运算,如下技术分享图片

  如果参加&运算的是负数(如-3&-5),则要以补码形式表示为二进制数,然后再按位进行“与”运算。

  用途:

  1.  清零:若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合以下条件:原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。例如:要求将二进制数11100101的第2位清零。
  2. 取一个数中某些指定位。例如:我们需要对一个字型数据取出其低8位的值时,我们可以这么做。技术分享图片

 

4.“按位或”运算符(|)

  两个相应的二进制位中只要有一个为1,该位的结果值为1。即:0|0=0,0|1=1,1|0=1,1|1=1。例如:技术分享图片

 

5.“异或”运算符(∧)

  异或运算符∧也称XOR运算符。
  它的规则是:若参加运算的两个二进制位同号则结果为0(假),异号则结果为1(真)。即:0∧0=0,0∧1=1,1∧0=1, 1∧1=0。例如:技术分享图片

 

 

6.∧运算符应用

  1. 使特定位翻转

    设有01111010,想使其低4位翻转,即1变为0,0变为1。可以将它与00001111进行∧运算,即:技术分享图片
  2. 与0相∧,保留原值

    例如:技术分享图片因为原数中的1与0进行∧运算得1,0∧0得0,故保留原数。
  3.  交换两个值,不用临时变量
    例如:a=3,b=4,现在想将a、b变量的值交换位置,我们传统的做法是定义多一个temp变量,而现在temp去度蜜月了,怎么办?
    我们可以这样做:
    a=a∧b;
    b=b∧a;
    a=a∧b;   这种方法也常应用于加密算法。

 

 





 





    

 

位运算

标签:分享   注意   方法   .com   auto   ima   运算符和   进制   加密算   

原文地址:https://www.cnblogs.com/tianqizhi/p/10111067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!