刘小汶

路漫漫其修远兮,吾将上下而求索。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
位运算:
  1. 按位与 &;9&5;任何运算符都有运算结果;
  2. 针对二进制进行计算;只有两个对应位都为1时,结果才为1;否则为0;
  3. 按位与的作用是能精确知道哪位是多少,获取某个精确的二进制位;

按位或 |

  1. 对应的两个二进位有一个为1时,就为1;9|5

按位异或 ^

  1. 9 ^ 5;当两个二进制位不相同是为1;
  2. 相同数值进行异或,结果肯定是0,比如9 ^ 9为0;
  3. 异或的值可以交换位置;9^5^6 == 9^6^5;
  4. 任何数值跟0进行异或,结果还是原来的数值;
  5. a^b^a==b

按位取反,包括符号位;

  1. 是单目运算符;~9;

左移

  1. 9<<1;把整数全部往左边移动n位(a<<n),往左边一挪,最高位会舍弃,最低位补0;9往左挪动一位,就是9*2的1次方==18;往左挪动2位,就是9*2的2次方==36;
  2. 最高位舍弃可能会导致正负性改变;

右移

  1. 右移一位,是保留符号位,空的位置用符号位来补齐;8>>1得到4;8>>2得到2;
  2. 8>>n;就得到8/2的n次方;
  3. 左移是乘法;右移是除法;
  4. a=b-1;b=b-a;a=b+a;或者a = a^b;b=a^b;a=a^b;用位与运算是a&1 ==1是奇数;a&1 ==0是偶数;
  5. 拿值就是位与1;将9打印出2进制出来;可以用右移方法;number >>30 & 1;
  6. int temp = (sizeof(number)<<3) -1;while(temp>=0){int value = number>>temp & 1;printf("%d",value);temp--;if((temp+1)%4==0){printf("")}}printf("\n")
posted on 2016-04-08 11:23  williamliuwen  阅读(1249)  评论(0编辑  收藏  举报