文档章节

JAVA 位运算符和位移运算符

恒源祥
 恒源祥
发布于 2017/09/11 19:47
字数 732
阅读 7
收藏 0

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

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

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

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

  

Java代码 

 收藏代码

  1. int a=(3&5);  
  2. System.out.println(a);  
  3. System.out.println(Integer.toBinaryString(3));   
  4. 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 

   

Java代码 

 收藏代码

  1. int a=(3|5);  
  2. System.out.println(a);  
  3. System.out.println(Integer.toBinaryString(3));   
  4. 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 

   

Java代码 

 收藏代码

  1. int a=(3^5);  
  2. System.out.println(a);  
  3. System.out.println(Integer.toBinaryString(3));   
  4. 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 
   

Java代码 

 收藏代码

  1. int a=(3<<2);  
  2. System.out.println(a);  
  3. System.out.println(Integer.toBinaryString(3));   
  4. 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 
 

Java代码 

 收藏代码

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


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

© 著作权归作者所有

共有 人打赏支持
恒源祥
粉丝 14
博文 109
码字总数 97221
作品 0
深圳
Android工程师
《Java从小白到大牛精简版》之第6章 运算符(下)

《Java从小白到大牛》纸质版已经上架了!! 本文是《Java从小白到大牛精简版》之第6章 运算符(上)继续... 6.4 位运算符 位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整型数...

tony关东升
06/26
0
0
《Java从小白到大牛精简版》之第6章 运算符(下)

《Java从小白到大牛》纸质版已经隆重上架了!!! 本文是《Java从小白到大牛精简版》之第6章 运算符(上)继续... 6.4 位运算符 位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整型...

tony关东升
06/26
0
0
黑马程序员.bobo.DAY.2

class VarDemo{public static void main(String[] args){System.out.println(60);System.out.println(0x3c);}} 11002(0)+12(1)+12(2)= 数值2(0)+数值2(1)+数值2(2) 0 0 1 1 0 1 0 1 =128 64 ......

BobbyLou
2015/05/14
0
0
Object Pascal 运算符,常量,变量

不区分大小写 赋值运算符 := (Java里是=) 例如 var I:Integer; I:=30; 比较运算符 =,<>,<,>,<=,>= 特别注意: 判等是=(Java里是==) 判不等是<>(Java里是!=) 逻辑运算符 and or not 算术运算符......

smilethat
2012/03/30
0
0
JAVA按位逻辑运算基本教程(1)

一、基本概念 所有的整数类型以二进制数字位的变化及其宽度来表示。例如,byte 型值42的二进制代码是00101010 ,其中每个位置在此代表2的次方,在最右边的位以20开始。向左下一个位置将是21,...

Pracy
2010/03/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

异步化,高并发大杀器

今天来聊聊如何让项目异步化的一些事。 在进入正文之前,顺便给大家推荐一个Java架构方面的交流学习群:698581634,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分...

Java大蜗牛
14分钟前
0
0
织梦dedecms安全设置

网站本身做好防范: 1、修改默认后台名。 打开网站根目录,找到[dede],这个文件夹就是后台的路径,可以随意修改,比如修改为[adminbuy],此时后台登陆的路径为:http://www.*****.com/admi...

雨季2014
14分钟前
0
0
完美Python入门基础知识点总结,看完你的Python就完全入门了!

Python标识符 在 Python 里,标识符有字母、数字、下划线组成。 在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 Python 中的标识符是区分大小写的。 以下划线...

糖宝lsh
20分钟前
0
0
Java关于前后台传输中文乱码以及Excel下载乱码解决

针对乱码,一般情况是前后台以及中间件编码格式不同导致.故需要保证编码格式相同即可. 1.前台页面格式指定,这里用的是jsp,故需要将pageEncoding指定为"UTF-8" 2.指定服务器编码格式,比如用的t...

勤奋的蚂蚁
23分钟前
0
0
Flutter组件 - Flexible

Flexible是一个控制Row、Column、Flex等子组件如何布局的组件。 Flexible组件可以使Row、Column、Flex等子组件在主轴方向有填充可用空间的能力(例如,Row在水平方向,Column在垂直方向),但是...

一箭落旄头
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部