zoukankan      html  css  js  c++  java
  • 位运算



    1.AND按位与(&)【有0则0】
    运算规则:0&0=0;0&1=0;1&0=0;1&1=1;

    用途:
    (1)取出一个数的指定位。指定位&1,其余位&0。

    例:设x=11101100,取x的低四位。令x&00001111=00001100

    快速幂里, b & 1 得到的是b的二进制最后一位, (因为1的二进制是001, 有0则0嘛)
    (2) a & -a 得到此数的二进制最后一位1及其后面的数

    2.按位或(|)【有1则1】
    运算规则:0|0=0;0|1=1;1|0=1;1|1=1;

    用途:

    (1)常用来对某些位置1。或上 一个指定位为1,其余位为0的数值即可。

     例:设x=11101100,将x的低四位置1。令x|00001111=11101111

    3.XOR异或(^)【同0异1】
    运算规则:0 ^ 0=0; 0 ^ 1=1; 1 ^ 0=1; 1^1=0;

    用途:

    (1)寻找出现次数为奇数的数, 异或同一数两次=原数,即为那个出现次数为奇的数

    (2)与0异或,保留原值。与1异或, 翻转.
      例: 0000 ^ 1100= 1100, 和 1111 ^ 1100= 0011

    (3)交换两个变量的值 a=a ^ b;b=a ^ b;a=a^b

    4:<< (左移运算符)
    各二进位全部左移若干位,高位丢弃,低位补0

    例:10的二进制是1010
    10<<7:1010000000

    5:>> (右移运算符)
    各二进位全部右移若干位,高位补0
    例:10的二进制是1010
    10>>7:00000001010
    用途:获取一个数x的第i位的二进制数:
    int u = x>>i&1;

  • 相关阅读:
    linux下的socket编程(3)--server端的简单示例
    高级I/O函数
    补充:memset透彻分析
    空间复杂度为0的数据交换
    排序算法一:直接插入排序
    [Github]watch和star的区别
    计算机网络总结(四)
    计算机网络总结(三)
    Java集合
    计算机网络总结(二)
  • 原文地址:https://www.cnblogs.com/la-la-wanf/p/14476666.html
Copyright © 2011-2022 走看看