`
wangwei3
  • 浏览: 117964 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA 位运算符和位移运算符

 
阅读更多
java位运算符包括
&(与)       AND
|(或)       OR
^(异或)     XOR
~(非)       NOT

位移运算符包括
>>(右移)
<<(左移)
>>>(右移,左边空出的位以0填充)
顾名思义,位运算符用于位运算,那就只能对整型或者字符型进行运算。而除了~(非)是一元运算符之外其他的都为二元运算符。

所有位运算都会把值转为二进制进行运算

&(与)
  运算规则:0&0=0   0&1=0  1&0=0   1&1=1
  即:两位同时为1时,结果为1,否则为0

  
     int a=(3&5);
     System.out.println(a);
     System.out.println(Integer.toBinaryString(3)); 
     System.out.println(Integer.toBinaryString(5)); 
   


   结果打印为
      1
     011
     101
    解析:3的二进制为011,5的二进制为101,与操作结果为001。转为十进制是1。


|(或)
      运算规则: 0|0=0   0|1=1  1|0=1   1|1=1
     即:参加运算的两个对象只要有一个为1,其结果就为1

   

      int a=(3|5);
      System.out.println(a);
      System.out.println(Integer.toBinaryString(3)); 
      System.out.println(Integer.toBinaryString(5)); 
    


   结果打印为
     7
    011
    101

    解析:3的二进制位011,5的二进制位101。或操作结果为111。转为10进制为7


^(异或)
    运算规则:1^0=0   0^1=1   1^0=1   1^1=0
         即:参加运算的两个对象,如果两个个相应位为“异”(值不同),则该位结果为1,否则为0

   
       int a=(3^5);
       System.out.println(a);
       System.out.println(Integer.toBinaryString(3)); 
       System.out.println(Integer.toBinaryString(5)); 
    

   
    结果打印为
          6
       011
       101

    解析:3的二进制位011,5的二进制位101。或操作结果为110。转为10进制为6


~(非)
    运算规则:~1=0   ~0=1         
        即:对一个二进制数按位取反,即0变为1,1变为0

    ~运算符的优先级比算数运算符、关系运算符、逻辑运算符和其他运算符都高

<<(左移)
    将一个运算符对象的各二进制位全部左移诺干位(左边的二进制位丢弃,右边补0)
     操作数每左移一位,相当于该数乘以2
   
       int a=(3<<2);
       System.out.println(a);
       System.out.println(Integer.toBinaryString(3)); 
       System.out.println(Integer.toBinaryString(12)); 
    

   
    结果打印为
         12
        11
        1100

    解析:此运算符的意思就是把3的二进制位全部左移两位,右边补2个0。3的二进制位11,左移两位后,右边补2个0就是1100。1100转为10进制为12。
     说到底左移操作就相当于2的2次方×3。 每左移1位次方就增1


>>(右移)
将一个数的各二进制位全部右移诺干位,正数左补0,负数左补1,右边丢弃。
操作数每右移一位,相当于该数除以2

       int a=(9>>1);
       System.out.println(a);
       System.out.println(Integer.toBinaryString(9)); 
       System.out.println(Integer.toBinaryString(4)); 
    

   
    结果打印为
         4
        1001
        100
    
    解析:9的二进制为1001,右移1位后,左正数补0,右边丢弃。结果为 0100。转为10进制后为4。

3
0
分享到:
评论
3 楼 qq4628241 2015-01-21  
按位“异或”运算符 (^) 将第一操作数的每个位与第二操作数的相应位进行比较。 如果一个位是 0,另一个位是 1,则相应的结果位将设置为 1。 否则,将对应的结果位设置为 0

按位“与”运算符 (&) 会将第一操作数的每一位与第二操作数的相应位进行比较。 如果两个位均为 1,则对应的结果位将设置为 1。 否则,将对应的结果位设置为 0。

按位“与或”运算符 ( | ) 将第一个操作数的每个位与第二个操作数的对应位进行比较。 如果其中一个位是 1,则将对应的结果位设置为 1。 否则,将对应的结果位设置为 0。
2 楼 kehui 2014-09-05  
^(异或)
    运算规则:1^0=0   0^1=1   1^0=1   1^1=0

第一个和第三个,是一样的,结果居然不一样,博主改一下吧,别误导人。
1 楼 mikey_java 2012-06-22  
感谢楼主的详解,受益匪浅,谢谢

相关推荐

    JAVA基础之java的移位运算

    “|”运算符和“&”运算符分别对变量a与b各个对应位的运算得到了变量c和变量d的值。对变量e和f的赋值说明了“^”运算符的功能。字符串数组binary 代表了0到15 对应的二进制的值。在本例中,数组各元素的排列顺序显示...

    基本语法.png

    Java基础:运算符、算数运算符、赋值运算符、关系运算符、逻辑运算符、条件运算符、位移运算符、条件运算符、下标运算符;整型字面量、浮点字面量、字符字面量、 布尔型字面量、引用字面量、类型字面量

    学通Java的24堂课

    3.6.3 自增和自减运算符 76 3.6.4 比较运算符 76 3.6.5 逻辑运算符 77 3.6.6 位运算符 78 3.6.7 三元运算符 80 3.6.8 运算符优先级 81 3.7 编码规范 81 3.8 照猫画虎——基本功训练 82 3.8.1 基本功训练1...

    21天学通Java-由浅入深

    ”:非运算符 54 3.4.4 逻辑运算符总结 54 3.5 三元运算符 55 3.6 位运算符 55 3.6.1 “&”:按位与运算符 56 3.6.2 “|”:按位或运算符 56 3.6.3 “^”:按位异或运算符 57 3.7 位移运算符 57 3.7.1 “&gt;&gt;”:带...

    java编程基础,应用与实例

    3.7.6 位移(shift)运算符(、、) 29 3.7.7 关系运算符(、、=、=、==、!=) 31 3.7.8 快速逻辑与(&&)和快速逻辑或(||) 32 3.7.9 位运算符:位与(&)、位或(|)、位异或(^) 34 3.7.10 三目运算符(?:) 35 3.7.11...

    java从入门到精通视频教程(全94讲)学习笔记整理(齐全).docx

    -二进制、位运算、位移运算 -集合 -集合 -集合 -集合补充 -异常 -面试题评讲 -布局管理器 -常用组件 -swing编程实战 -绘图技术.坦克大战2 -事件处理.坦克大战3 -事件监听.坦克大战4 -事件总结.坦克大战5 -线程.坦克...

    java位运算加密示例

    通过位运算中的"^"异或运算符把字符串与一个指定的值进行异或运算,从而改变字符串每个字符的值,这样就可以得到一个加密后的字符串

    JavaScript基础和实例代码

    2.7.4 位移运算符 2.7.5 自加和自减 2.7.6 比较运算符 2.7.7 逻辑运算符 2.7.8 逗号运算符 2.7.9 空运算符 2.7.10 ?...:运算符 2.7.11 对象运算符 2.7.12 typeof运算符 2.7.13 运算符优先级 2.8 核心语句 2.8.1 基本...

    源文件程序天下JAVASCRIPT实例自学手册

    2.7.4 位移运算符 2.7.5 自加和自减 2.7.6 比较运算符 2.7.7 逻辑运算符 2.7.8 逗号运算符 2.7.9 空运算符 2.7.10 ?...:运算符 2.7.11 对象运算符 2.7.12 typeof运算符 2.7.13 运算符优先级 2.8 核心语句 2.8.1 基本...

    javascript基本语法

    :)、位移运算符(|,&,&lt;&lt;,&gt;&gt;,~,^)和字符串运算符(+)。 可能很多人不知道”===”是什么。 在这里,我为大家解释一下,在javascript中,“==”是等同运算符。 等同运算符的比较规则: 当两个运算数的类型不同时:...

    最新JAVA编程题全集_50题及答案

    // 中位数变量 System.out.println("数据长度:"+len); left = 0; right = len - 1; while (left ) { //由于源数据不是顺序的,需先进行排序 int temp; for(int i=0;i;++i) { ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用Oracle。他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了...

    PL/SQL 基础.doc

    NUMBER(P,S) P:精度:整个的有效数位(从左边开始第一个不为0的数字起) S:刻度,可选(小数点后面的保留位数) BINARY_INTEGER:保存整数. 和NUMBER的底层的保存方式不同, BINARY_INTEGER为2进制保存,NUMBER 需要...

Global site tag (gtag.js) - Google Analytics