Java的按位操作符

本文参考:Java的位操作符

Java的位操作符用来操作整数基本数据类型中的单个“比特”(bit),即代进制位。而我们知道比特就是0和1,那么,位操作就是对这些数据进行基本的操作。如果基本类型是char、byte或者short类型的数值进行移位处理,那么会转化成int类型,再进行移位的处理

Java的按位操作符

按位操作符会对两个参数对应的位执行布尔代数运算,并最终生成一个结果。这个操作符有与(&)、非(~)、或(|)、异或(^)。我们知道单位“比特”(bit),即代进制位,都是0和1,异或(^)可能比较复杂点,两个操作数的位中,相同则结果为0,不同则结果为1。那么最基本的逻辑就像下面这个样子。

1&1 → 1
1&0 → 0
~1 → 0
~0 → 1
1|1 → 1
1|0 → 1
1^0 → 1    (1为01,0为00,那么结果就是01,还是1)
1^1 → 0

Java的移位操作符

Java的移位操作符无非就是对二进制进行位移。

进行<<就是左移,也就是所有所有二进制往左边移动一个位,0010 0000 << 1 等于0100 0000

进行>>右移,也就是所有所有二进制往右边移动一个位,0010 0000 >> 1 等于0001 0000 。

可以试试下面的例子,整数型的也是变成二进制来计算:

class Test{
     public static void main(String[] args){
     int numInt1 = 3;
     int numInt2 = -3;
     System.out.println(numInt1<<1);
      System.out.println(numInt1>>1);
System.out.println(numInt2<<1);
 System.out.println(numInt2>>1);

    }
 }
/* 输出的结果如下(www.breakyizhan.com)
6   --->  0000 0011<<1 , 变为0000 0110
1   --->  0000 0011>>1 , 变为0000 0001...1后面的1被顶出去了,所以结果为1
-6   -->  1111 1101<<1 , 变为1111 1010 取反+1= 0000 0110   -6
-2   -->  1111 1101>>1 , 变为1111 1110 取反+1= 0000 0010   -2
*/

当然,还有Java的三元操作符,这部分的功能和if-else有点类似,具体更多内容可以看:Java的三元操作符|Break易站
时间: 2024-10-17 00:13:31

Java的按位操作符的相关文章

java按位操作符和位移操作符

一,按位操作符. 1.按位与操作符(&) 如果两个数的二进制,相同位数都是1,则该位结果是1,否则是0. 例 5&4 5的二进制是  0000 0000 0000 0101 4的二进制是  0000 0000 0000 0100 则结果是       0000 0000 0000 0100  转为十进制是4. 2.按位或操作符(|) 如果两个数的二进制,相同位数有一个是1,则该位结果是1,否则是0. 例  5 | 4 5的二进制是  0000 0000 0000 0101 4的二进制是 

Java知识系统回顾整理01基础04操作符04位操作符

一.位操作符 位操作符在实际工作中用的并不常见,但是我比较纠结这些位操作.所以实际练习位操作符的每一个操作符的操作实例来理解其具体含义. ? ? 建议:?如果确实感兴趣,就看看,个人建议跳过这个章节. 真正工作用到了,再来看. ? ? 二.一个整数的二进制表达 位操作都是对二进制而言的,但是我们平常使用的都是十进制比如5. 而5的二进制是101. 所以在开始学习之前,需要掌握一个整数的二进制表达是多少. 通过Integer.toBinaryString() 方法,将一个十进制整数转换为一个二进制

为什么不要在 JavaScript 中使用位操作符?

如果你的第一门编程语言不是 JavaScript,而是 C++ 或 Java,那么一开始你大概会看不惯 JavaScript 的数字类型.在 JavaScript 中的数字类型是不区分什么 Int,Float,Double,Decimal 的.咳咳,我说的当然是在 ES6 之前的 JS,在 ES6 的新标准中提出了像 Int8Array 这样新的数据类型.不过这不是本文叙述的重点,暂且就不谈啦.本文将更着重地谈 JS 的数字类型以及作用于它的位操作符,而关于包装对象 Number 的更多了解可以

[Thinking in Java]第3章-操作符

3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.5 算术操作符 3.6 自动递增和递减 3.7 关系操作符 3.8 逻辑操作符 3.9 直接常量 3.10 按位操作符 3.11 移位操作符 3.12 条件操作符 3.13 字符串操作符+和+= 3.14 类型转换 目录 3.1 更简单的打印语句 学习编程语言的同学遇到的第一个程序无非是打印Hello, world了,然而在Java中要写成 System.out.println("Hello, world&q

JAVA编程思想(2) - 操作符(二)

5. 直接常量 -一般来说,如果程序里使用了"直接常量",编译器可以准确的知道要生成什么样的类型,但有时候却是模棱两可的.这时候需要我们对编译器进行适当的"指导" -直接常量后面的后缀字符标示了它的类型. -指数记数法:e代表"10的幂次" -注意如果编译器能够正确的识别类型,就不必在数值后附加字符,例如语句: float f4 = 200; 不存在含糊不清的地方,所以200后面不需要加L,但是对于:float f4 = 1e-43f; 编译器通

java使double保留两位小数的多方法 java保留两位小数

这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧 复制代码 代码如下: mport java.text.DecimalFormat; DecimalFormat    df   = new DecimalFormat("######0.00"); double d1 = 3.23456  double d2 = 0.0;double d3 = 2.0;df.format(d1); df.format(d2); df.format(d3); 3个结果分别为:

20160402_C语言位操作符的使用

C语言的设计具备了汇编语言的运算能力,它支持全部的位操作符. 位操作符是对字节或字中的位进行测试.置位或移位处理,在对微处理器的编程中,特别适合对寄存器.I/O端口进行操作. 6种位操作符: (1) & :按位“与”——仅当两个操作数为1时,结果为1,否则为0.如:1000 1000  & 1000 0001  = 1000 0000: (2) | :按位“或”——仅当两个操作数为0时,结果为0,否则为1.如:1000 1000 | 1000 0001 = 1000 1001: (3) ^

java中的位运算

刚才在imooc看php基础发现一个特别容易让我们理解的描述[关于异或运算的] 之前学习java的时候 位运算有4种,当时是这样记录的: &  按位与 (and) 两个对应二进制都为1则为1,其余全为0 |   按位或(or) 两个二进制数有一个为1则为1,只有两个0才为0 ~  按位非(NOT) 二进制中取反 ^  按位异或(XOR) 两个二进制中相同为则为0,不同则为1             其实最难以理解的就是这个异或运算. 直接搬过来(原网址点我): 我们可以从投票的角度来理解逻辑运算

神奇的位操作符

相信学过C语言的小伙伴们都知道位操作符,正确的使用位操作符会让我们写出更高效率的程序 但不要忘记它也是有缺点的:只能用于整型和字符型数据. 速度:快于乘法 等同于加减法 *参与运算的数据以补码形式出现!(不要弄错啦!) eg: 数字 -1 原码:10000000 00000000 00000000 00000001 反码:11111111 11111111 11111111 11111110 补码:11111111 11111111 11111111 11111111 ***有符号数只改变数值部