文档章节

JAVA 位运算符和位移运算符

恒源祥
 恒源祥
发布于 2017/09/11 19:47
字数 732
阅读 7
收藏 0
点赞 0
评论 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
博文 108
码字总数 95316
作品 0
深圳
Android工程师
2018年java编程语言经典基础知识总结学习

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/21 ⋅ 0

Kotlin2.4while和for循环

Kotlin的迭代应该是和Java最接近的。while循环和Java完全一样。for循环仅以唯一一种形式存在,和Java的for-each循环一直。 2.4.1while循环 Kotlin中有while循环和do-while循环,它们的语法和...

无心下棋 ⋅ 05/13 ⋅ 0

Java 已老,Kotlin 或将取而代之!

点击上方“CSDN”,选择“置顶公众号” 关键时刻,第一时间送达! Java已经成为历史。它无法发展成现代语言,同时保证向后兼容性。但它为我们带来了最好的JVM生态系统,并引导了许多优秀语言...

CSDN ⋅ 05/12 ⋅ 0

Java特殊符号>>,>>

Java中有三种移位运算符 前面两个<<,>>容易理解一些,一般我们都可以直接得出结果,最后一个忽略符号位是什么意思呢? 最大的正整数 我们知道Java中Interger占用4个字节,其中最高位为符号位...

Real_man ⋅ 06/17 ⋅ 0

全面的java编程新手入门学习笔记总结

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/10 ⋅ 0

Java面试2018常考题目汇总及答案带走不谢!

一、JAVA基础篇-概念 1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网、云计算、智能手机(Android)等...

java高级架构牛人 ⋅ 06/14 ⋅ 0

[Java教程 10] 运算符之算术运算符

运算符 运算 对常量和变量进行操作的过程称为运算。 运算符 对常量和变量进行操作的符号称为运算符 操作数 参与运算的数据称为操作数 用运算符把常量或者变量连接起来符号java语法的式子就可...

呆萌钟 ⋅ 04/18 ⋅ 0

Java核心技术卷1 重读经典小记

Java基础 java中的int类型固定为32位 三个特殊的浮点值:正无穷大(),负无穷大()和NaN()。 在java中,char类型用UTF-16编码描述一个代码单元.不建议在程序中使用char类型. boolean类型的f...

java_龙 ⋅ 02/27 ⋅ 0

Java语言标准(第10版)第一章(节选)翻译与评注

英文原文链接:https://docs.oracle.com/javase/specs/jls/se10/html/jls-1.html 评注是括在鱼尾号之间的文字,其余均为翻译 Java编程语言是一种通用目的的【有别于VBA、Matlab这些专用型语言...

Jelif ⋅ 06/02 ⋅ 0

使用Kotlin高效地开发Android App(四)

一. 运算符重载 在Kotlin的世界里,我们可以重载算数运算符,包括一元运算符、二元运算符和复合赋值运算符。 使用operator修饰符来修饰函数名的函数,这些函数可以是成员函数也可以是扩展函数...

fengzhizi715 ⋅ 05/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 28分钟前 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

版本控制工具

CSV , SVN , GIT ,VSS

颖伙虫 ⋅ 昨天 ⋅ 0

【2018.06.19学习笔记】【linux高级知识 13.1-13.3】

13.1 设置更改root密码 13.2 连接mysql 13.3 mysql常用命令

lgsxp ⋅ 昨天 ⋅ 0

LVM

LVM: 硬盘划分分区成物理卷->物理卷组成卷组->卷组划分逻辑分区。 1.磁盘分区: fdisk /dev/sdb 划分几个主分区 输入t更改每个分区类型为8e(LVM) 使用partprobe生成分区的文件:如/dev/sd...

ZHENG-JY ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部