zoukankan      html  css  js  c++  java
  • 位运算的分类

    位运算:是直接对整数在内存中的二进制位进行操作,效率高。

    位运算的分类:

      ~ 按位取反
      ^ 异或
      | 按位或
      & 按位与
      && 逻辑与
      || 逻辑或
      ! 逻辑非
      << 左移
      >> 右移
      >>> 右移 0填充

    为了方便,以下二进制位以8位。

    位与&:是参与运算的两数各对应的二进位相与,
    有0为0,全1为1.

    1&2=0
    0000 0001 ------1
    0000 0010 ------2
    ---------
    0000 0000 ------0

    位或|:是参与运算的两数各对应的二进位相或,
    有1为1,全0为0.

    1|3=3
    0000 0001 ------1
    0000 0011 ------3
    ---------
    0000 0011 ------3

    异或^:是参与运算的两数各对应的二进位相异或,
    当两对应的二进位相异时,结果为1;相同时,结果为0.

    1^5=8
    0000 0001 ------1
    0000 0101 ------5
    ----------
    0000 0100 ------8

    以上三种无论前者是真还是假,都要判断第二个数。

    逻辑与&&:
    0&&0=0
    0&&1=0
    1&&0=0
    1&&1=0

    前者为假时,不用判断后者。

    逻辑或||:
    0||0=0
    0||1=1
    1||0=1
    1||1=1

    前者为真时,不用判断后者。

    逻辑非!:
    !0=1
    !1=0

    左移<<:左边的位被挤掉。对于右边移出的空位,则空位补0.其值相当于乘2.

    3<<2=12

    0 0 1 1 -----3
    1 1 x x -----x为0,即为 1 1 0 0
    --------
    1 1 0 0 -----12


    右移>>:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0;
    若为负数,可能补0或补1(符号位),这取决于所用的计算机系统。
    其值相当于除以2.

    12>>1=6

    1 1 0 0 -----12
    x 1 1 0 -----x为0,即为0 1 1 0
    --------
    0 1 1 0 -----6

    按位取反~:

    ~6=9

    0 1 1 0 ------6
    1 0 0 1 ------9

    1和0互换

    运算符>>>:右边的位被挤掉。对于左边移出的空位一概补上0;

  • 相关阅读:
    uva 10561 sg定理
    二进制下 求分数化小数的循环节问题
    zoj 2562 反素数
    uva 11916 解模方程a^x=b (mod n)
    Android 组件化方案探索与思考
    2018谷歌I/O开发者大会8大看点汇总 新品有哪些
    Glide高级详解—缓存与解码复用
    Android性能优化:手把手带你全面实现内存优化
    Android几种强大的下拉刷新库
    Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/6635609.html
Copyright © 2011-2022 走看看