zoukankan      html  css  js  c++  java
  • C# 位运算详解

    运算符描述
    &(位与) 当两个二进制操作位都为1时,结果就为1
    |(位或) 当两个二进制操作位有1个为1时,结果就为1
    ^(位异或) 当两个二进制操作位只有1个为1时,结果为1
    ~(位非) 操作位的每个位都取反(就是0变成1,1变成0)
    <<(左移) 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。
    >>(右移) 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。

    pq实例图

    pqp & qp | qp ^ q
    0 0 0 0 0
    0 1 0 1 1
    1 1 1 1 0
    1 0 0 1 1

    如下 :

    int x=12,y=10;

    int a;

    a=x&y; //a=8

    下面是计算试子的和加减法一样

    二进制的个位,十位,百位,千位,分别对应的是1,2,4,8 二进制每多一位只需要乘2 那个个位置有1 就加上该位置的十进制数 。

    上面说&运算时,当两个二进制操作位都为1时,结果就为1

    看个位 0&0 =0  十位 0&1=0   百位 1&0=0 千位1&1=1 

    换下来就是 1000(二进制) =8(十进制) 12&10=8

    12|10,12^10 可以试着就算这个值

    位非怎么运算呢?

    ~12  直接位数取反 0变1,1变0 二进制左端1是位负数  在取反上-1

    ~12=-13; 

    要获取他12的相反数 二进制表示 也是 取反 但是在结果上加1

    左/右移  左移对移玩的位置补0 14<<3  二进制就是 1110>>1110 000 

    就是 14X2X2X2=112  14<<3=112

    右移 切记负数右移是错误的 因为一个负数无论如何除2都不会乘位一个正数  14>>3=1

  • 相关阅读:
    搜索栏+collectionView实现
    iOS密码框实现(二)取消确定按钮
    MotionManager 陀螺仪实现方式
    ubuntu常用命令
    Ubuntu 启用root账户
    How to solve “sudo: /etc/sudoers.d is world writable”
    ubuntu進入dos界面的方法
    炫耀一下hadoop學習成果
    fpdf使用標楷體
    win8磁盘占用100%的12种解决办法
  • 原文地址:https://www.cnblogs.com/feizianquan/p/10071103.html
Copyright © 2011-2022 走看看