zoukankan      html  css  js  c++  java
  • Java 位运算符 深入理解

    Java 位运算符 深入理解##

    在Java中存在着这样一类操作符,是针对二进制进行操作的。它们各自是&、|、^、~、>>、<<、>>>几个位操作符。不管是初始值是依照何种进制,都会换算成二进制进行位操作。接下来对这几种操作符进行一下简单的解说。


    • &

    作用是对运算符两側以二进制表达的操作符按位分别进行'与'运算。而这一运算是以数中同样的位(bit)为单位的。操作的规则是:仅当两个操作数都为1时。输出结果才为1。否

    则为0,示比例如以下:

    12  的二进制为 1100
    
    5   的二进制为 0101
    

    则 12 & 5 的二进制为 0100,则完整的运算式为 12 & 5 = 4;


    • |:

    作用是对运算符两側以二进制表达的操作符按位分别进行'或'运算。而这一运算是以数中同样的位(bit)为单位的。

    操作的规则是:仅当两个操作数都为0时,输出的结果才为0。

    否则为1,示比例如以下:

    12  的二进制为 1100
    
    5   的二进制为 0101
    

    则 12 | 5 的二进制为 1101。则完整的运算式为 12 & 5 = 13;


    • ^:

    作用是对运算符两側以二进制表达的操作数按位分别进行'异或'运算,而这一运算是以数中同样的位(bit)为单位的。

    异或运算操作的规则是:仅当两个操作数不同一时候。对应的

    输出结果才为1,否则为0,示比例如以下:

    12  的二进制为 1100
    
    5   的二进制为 0101
    

    则 12 | 5 的二进制为 1001。则完整的运算式为 12 & 5 = 9;


    • ~:

    '取反'运算符~的作用是将各位数字取反:全部的0置为1,1置为0,示比例如以下:

    12  的二进制为 1100
    

    进行取反操作为 10000000 00000000 00000000 00001101

    则完整的运算式为
    ~12 = -13


    • <<:

    左移就是把一个数的全部位数都向左移动若干位,示比例如以下:

    12  的二进制为 1100
    

    则 12 << 1 的二进制为 11000, 则完整的运算式为 12 << 1 = 24;


    右移就是把一个数的全部位数都向右移动若干位,示比例如以下:

    12  的二进制为 1100
    

    则 12 >> 1 的二进制为 0110。 则完整的运算式为 12 >> 1 = 6;


    无符号右移一位。不足的补0。 示比例如以下:

    12 的二进制为 1100
    

    则 12 >> >1 的二进制为 0110, 则完整的运算式为 12 >> 1 = 6;


    参考:https://www.cnblogs.com/gavanwanggw/p/7015620.html

    有志者,事竟成,破釜沈舟,百二秦关终属楚。苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
  • 相关阅读:
    拓扑排序模板
    杭电 2066 一个人的旅行
    杭电 1596 find the safest road (最小路径变形求最大安全度)
    【状态压缩DP】【BZOJ1087】【SCOI2005】互不侵犯king
    【bzoj1001】【最短路】【对偶图】【最大流转最小割】狼抓兔子题解
    [BZOJ1179][APIO2009][强连通分量Tarjan+spfa]ATM
    [BZOJ1194][HNOI2006][强连通分量Tarjan+dfs]潘多拉的盒子
    说一说ST表 讲一讲水题
    【强连通分量】tarjan算法及kosaraju算法+例题
    对拍程序讲解及源码举例
  • 原文地址:https://www.cnblogs.com/menxn/p/9204141.html
Copyright © 2011-2022 走看看