【java提高】(17)---Java 位运算符

Java 位运算符 &、|、^、~、<<、>>

以前学过有关java的运算符,不过开发了这么久也很少用过这个。现在由于开发需要,所以现在再来回顾整理下有关java的运算符。

主要运算符有以下:与(&)或(|)异或(^)取反(~)左移(<<)右移(>>)

一 与(&) 和 (|)

1、&(按位与)

规则:将两边的数转换为二进制位,然后运算最终值。运算规则即(两个为真才为真)1&1=1 , 1&0=0 , 0&1=0 , 0&0=0。

举例

4&7 这个运算的结果是多少?

3&5 这个运算的结果是多少?

2、|(按位或)

规则 将两边的数转换为二进制位,然后运算最终值。不同的是运算规则(一个为真即为真)1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1

举例

3|6 这个运算的结果是多少?

5|9 这个运算的结果是多少?

二、异或(^) 和 取反(~)

1、异或(^)

规则 异就是不同,其运算规则为1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0

举例

3^6 这个运算的结果是多少?

5^9 这个运算的结果是多少?

2、取反(~)

规则 取反就是1为0,0为1。

举例

~5 这个运算的结果是多少?

这个其实就是,就是把1变0,0变1。

注意:二进制中,最高位是符号位 1表示负数,0表示正数。

~15 这个运算的结果是多少?

三、左移运算(<<) 和 右移运算(>>)

1、左移运算(<<)

规则 左移就是把所有位向左移动几位。

举例

6 << 2 这个运算的结果是多少?

9 << 2 这个运算的结果是多少?

公式 M << n 其实可以这么算 M << n = M * 2^n

2、右移运算(>>)

规则 这个跟左移运算大体是一样的,但是还是有点不同的,不同点在于对于正数和负数补位的时候补的不一样,负数补1,正数补0

举例

12 >> 2 这个运算的结果是多少?

-9 >> 2 这个运算的结果是多少?

从这里就可以看出 正数右移补0,负数右移补1

四、负数的进制表示

我们来思考下

1、负的十进制的转二进制

对于十机制的负数,如何用二进制来表示:

思路三步曲: 1、正数二进制 2、反码 3、反码+1

举例

-1 如何转换成二进制?

说明 -1在计算机里用二进制表达就是全1

2、负的二进制转十进制

上面思路是负的十进制转二进制,那么同样负的二进制转10进制跟上面相反就可以了。

思路三步曲 1、负数的二进制码 2、二进制码-1 3、取反

举例

1111 1101 如何转换成十进制?

参考

1、Java位运算符

2、Java中正负数二进制表示

3、Java基础——十进制负数转换为二进制、八进制、十六进制

只要自己变优秀了,其他的事情才会跟着好起来(上将13)

原文地址:https://www.cnblogs.com/qdhxhz/p/11339011.html

时间: 2024-10-12 15:26:14

【java提高】(17)---Java 位运算符的相关文章

Java提高篇——Java实现多重继承

阅读目录 一. 接口二.内部类 多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承.有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需要思考的不是怎么使用多重继承,而是您的设计是否存在问题.但有时候我们确实是需要实现多重继承,而且现实生活中也真正地存在这样的情况,比如遗传:我们即继承了父亲的行为和特征也继承了母亲的行为和特征.可幸的是Java是非常和善和理解我们的,它提供了两种方式让我们曲折来实现多

Java提高篇——Java 异常处理

异常的概念 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常. 异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据. 要打开的文件不存在. 网络通信时连接中断,或者JVM内存溢出. 这些异常有的是因为用户错误

Java学习笔记——关于位运算符的问题

我就之直接贴图了!不想排版了! 有什么问题,欢迎大家指出,帮助我提高,谢谢! 原文地址:https://www.cnblogs.com/launolife/p/8319497.html

Java面试17|Java基础

1.final相关 (1)final在编译期的优化 只有在编译阶段能确定这个final引用赋值的内容,编译器才有可能进行编译时优化,而编译期能确定的内容只能来自于常量池中,如int,long,String等常量,不包含new String()等,也不包含方法返回值.将一个方法设成final后,编译器就可以把对那个方法的所有调用都置入"嵌入"调用里(内嵌机制),这样可以提高运行效率. (2)final可以实现可见性 被final修饰的字段在构造器中一旦初始化完成,并且构造器没有把 &qu

Java总结——常见Java集合实现细节(1)

Java提高--常见Java集合实现细节(1) 2018年04月18日 15:07:35 阅读数:25 集合关系图 Set和Map set代表一种集合元素无序.集合元素不可重复的集合 map代表一种由多个key-value对组成的集合 set和map的关系 set和map的接口十分类似. Map的key有一个特征:所有key不能重复,且key之间没有顺序,也就是说将所有key组合起来就是一个Set集合. Map-->Set : Map中提供了  Set<k> keySet()  返回所有

java的位运算符(&gt;&gt;,&lt;&lt;,&gt;&gt;&gt;,&amp;,|)

主要总结下java的位运算符的操作.java的位运算符不紧可以提高运行效率,同时也有会意想不到的效果(java.util.ArrayDeque有很好的体现),在后续中会举例说明. 开始说位运算符之前,先简单的复习下补码的知识,然后举个简单的例子说明下计算机中的补码操作(计算机中的加减法). 补码 计算机进行加减法操作时,都是以补码进行操作的,所以java中的位运算都是以补码进行操作的.正数的补码是其本身,而负数的补码为其反码+1.如下例子. 因为java中int型是4个字节,需要32位,为了写起

Java位运算符

位运算符 在Java中所有的数据都是以二进制数据的形式进行运算的,即如果是一个int型变量,要采用位运算时则必须将其变为二进制数据:每一 位二进制进行与.或.异或操作的结果如下: package com.test; public class Test { public static void main(String[] args) { int x = 3; int y = 6; System.out.println(x & y); System.out.println(x | y); Syste

Java的算数运算符、关系运算符、逻辑运算符、位运算符

Java的运算符,分为四类:                           算数运算符.关系运算符.逻辑运算符.位运算符.                           算数运算符:+  -  *  /  %  ++  --                           关系运算符:==  !=  >  >=  <  <=                           逻辑运算符:&&  ||  !  ^  &  |        

java注释 命名 数据类型 基本类型转换 位运算符 逻辑运算符 三目运算符

一.java注释 1.单行注释  //注释内容 2.多行注释 /*注释内容*/ 3.文档注释(可用javadoc工具生成api文档,不过我还没试过)/**文档注释*/,文档注释可以在使用的时候看见注释. 文档注释常用的标记 @auther作者 @version版本 @deprecated 不推荐使用 @param 本放的参数 @return 返回值 @throws异常,同@exception 二.java的命名 1.项目名 字母全部小写 2.包名 全部小写 3.类名 首字母大写加驼峰 4.方法名