`
guispor7
  • 浏览: 26059 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA中四个二进制位从操作符即(&按位与、|按位货、^按位异或、~按位取反)

阅读更多
按位与运算符(&)
参加运算的两个数据,按二进制位进行“与”运算。

运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1;

       即:两位同时为“1”,结果才为“1”,否则为0

例如:3&5  即 0000 0011 & 0000 0101 = 0000 0001   因此,3&5的值得1。


另,负数按补码形式参加按位与运算。

if(1==2 & 2==2)程序执行时即便1=2是false了,但是还会比较2==2
if(1==2 && 2==2),1==2是false,就不会比较2==2了

“与运算”的特殊用途:

(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。


(2)取一个数中指定位

方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。

例:设X=10101110,

    取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;

    还可用来取X的2、4、6位。


按位或运算符(|)
参加运算的两个对象,按二进制位进行“或”运算。

运算规则:0|0=0;   0|1=1;   1|0=1;    1|1=1;

      即 :参加运算的两个对象只要有一个为1,其值为1。

例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111   因此,3|5的值得7。


另,负数按补码形式参加按位或运算。

“或运算”特殊作用:

(1)常用来对一个数据的某些位置1。

方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。

例:将X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。


异或运算符(^)
参加运算的两个数据,按二进制位进行“异或”运算。

运算规则:0^0=0;   0^1=1;   1^0=1;   1^1=0;

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


“异或运算”的特殊作用:

(1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。

例:X=10101110,使X低4位翻转,用X ^ 0000 1111 = 1010 0001即可得到。


(2)与0相异或,保留原值 ,X ^ 0000 0000 = 1010 1110。

从上面的例题可以清楚的看到这一点。

取反运算符(~)
参加运算的一个数据,按二进制位进行“取反”运算。

运算规则:~1=0;   ~0=1;

      即:对一个二进制数按位取反,即将0变1,1变0。


使一个数的最低位为零,可以表示为:a&~1。

~1的值为1111111111111110,再按“与”运算,最低位一定为0。因为“~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。


然后在附送你两个为运算符的解释:
左移运算符(<<)
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

例:a = a << 2 将a的二进制位左移2位,右补0,

左移1位后a = a * 2;
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

右移运算符(>>)
将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

操作数每右移一位,相当于该数除以2。

例如:a = a >> 2 将a的二进制位右移2位,

左补0 or 补1 得看被移数是正还是负。

分享到:
评论
1 楼 c581698 2016-06-06  
感谢分享

相关推荐

    详谈Java中的二进制及基本的位运算

    Java 中的二进制及基本的位运算 Java 中的二进制是计算技术中广泛采用的数制,使用 0 和 1 两个数码来表示数。Java 中的二进制数据主要是以补码的形式存储的。计算机中的二进制是一个非常微小的开关,用“开”来...

    java位运算,符号运算 详细解释

    Java位运算是一种底层操作,它直接作用于二进制位,是计算机科学中的基础操作。在Java编程中,位运算可以用于高效地处理数据,尤其是在处理数组、位集或者进行低级优化时非常有用。本篇文章将深入探讨Java中的位运算...

    java 位操作集合以及应用技巧

    Java中的位操作是一种底层的、高效的编程技巧,它允许我们直接对二进制位进行操作。位操作在处理数据、优化代码性能等方面有着广泛的应用,尤其是在处理二进制流、节省内存资源或进行高效计算时。本文将深入探讨Java...

    Java操作符总结-动力节点共20页.pdf.zip

    位操作符用于操作二进制位,如按位与(&)、按位或(|)、按位异或(^)、左移()、右移(&gt;&gt;)和无符号右移(&gt;&gt;&gt;). 这些操作符在处理二进制数据,如数组索引、颜色编码或者位标志时非常有用。 六、条件操作符(三元运算符) ...

    java位运算符之左移操作视频

    位运算符直接作用于二进制位,它们包括:左移(),右移(&gt;&gt;),无符号右移(&gt;&gt;&gt;),按位与(&),按位或(|),按位异或(^),按位非(~)。这些运算符在处理位级逻辑和数值计算时非常有用。 二、左移操作符() ...

    Java学习随笔7(进制).docx

    Java中的位运算,如与(&),或(|),异或(^),左移(),右移(&gt;&gt;)和无符号右移(&gt;&gt;&gt;), 是在二进制层面操作数字的重要手段。例如,`&`操作符可以用来做掩码操作,检查或设置二进制位;`|`用于合并位,`^`用于翻转指定位,...

    Java中的位运算

    位运算(Bitwise Operators)是计算机科学中的一个基础概念,它直接作用于二进制位上。在Java语言中,位运算符可以应用于所有整型数据类型,如`long`、`int`、`short`、`char`和`byte`。位运算在很多场景下非常有用...

    运算符操作原理总结 C C++ C# java

    - **定义**:将一个二进制数的所有位向右移动若干位,左边空出的位置由原来的符号位填充。 - **示例**:对于正数 `00011001` (十进制 25),右移3位后的结果为 `00000110` (十进制 6);对于负数 `11100111` (十进制...

    sun公司JAVA认证考试题

    在Java中,异或操作符应用于整数时,会对每个二进制位进行异或操作。`6 ^ 3` 的结果是5,因为6的二进制形式是110,3的二进制形式是011,异或操作后得到101,即十进制的5。所以输出是5。 5. **方法参数传递**: ...

    Java基本语法(一)

    位运算符如&(按位与)、|(按位或)、^(按位异或)、~(按位取反)和(左移)、&gt;&gt;(右移)则用于处理二进制数据。 了解这些基础知识后,开发者可以开始构建简单的Java程序,例如: ```java public class Hello...

    java代码-十进制转换为二进制

    Java中的位运算符还包括按位与(&),按位或(|),按位异或(^),按位非(~),左移(),右移(&gt;&gt;), 无符号右移(&gt;&gt;&gt;). 2. 数组与字符串:在自定义方法中,我们使用了`StringBuilder`来构建二进制字符串。`StringBuilder`是...

    CoreJava全套详细笔记资料.pdf

    * 位运算符包括按位与、按位或、按位异或和按位非,用于对数字进行二进制操作。 * 逻辑运算符包括逻辑与、逻辑或和逻辑非,用于对布尔值进行逻辑操作。 四、流程控制 * 流程控制是Java语言中的控制结构,用于控制...

    详解Java的位操作符

    本文将深入讲解Java中的位操作符,包括与(&)、或(|)、异或(^)、非(~)以及移位操作符。 首先,让我们来看看位操作符。Java提供了四种基本的位操作符: 1. **与(&)**:当两个操作数的相应位都是1时,结果的对应位才...

    JAVA WEB 面试题集合

    例如,`&` 表示按位与运算,即两个操作数对应位都是1时,结果才是1;`|` 表示按位或运算;`^` 表示按位异或运算。 - **条件运算符** (`&&`, `||`): 这些运算符用于处理布尔表达式,主要用于逻辑判断。`&&` 表示逻辑...

    高级Java软件工程师笔试和面试题集锦

    这些操作符在进行操作时会直接对二进制位进行相应的逻辑运算。 - **按位与 (`&`)**:如果对应的两个比特位都为1,则该位的结果为1;否则为0。 - **按位或 (`|`)**:如果对应的两个比特位中至少有一个为1,则该...

    Oracle笔记

    二进制与八进制或十六进制的转换相对简单,每三位二进制可以转换为一个八进制数字,每四位二进制可以转换为一个十六进制数字。 其次,笔记中还提到了左移和右移操作。左移操作符()是将数值向左移动指定的位数,...

    scjp模拟试题(java)

    在Java中,`~` 是按位取反操作符。当对一个整数进行取反操作时,它会将二进制表示中的每一位取反。`0xFFFFFFF1` 是一个32位的二进制数,其取反后得到 `0x0000000F`,转换为十进制即为15,因此选项C正确。 第二题...

    java认证试题 以学习学习 Java 让您可以玩网络游戏、与世界各地的人们聊天、计算您的抵押利息、欣赏三维图片等等。

    在Java中,`~`是按位取反操作符。题目中,`int i = 0xFFFFFFF1;`是一个32位整数,其二进制表示为`1111 1111 1111 1111 1111 1111 1111 1001`,取反后得到`0000 0000 0000 0000 0000 0000 0000 0110`,对应的十进制值...

    JAVA经典语句总结

    - 按位与运算的结果为 `0000 0010`,即十进制的2 - 按位或运算的结果为 `0000 0111`,即十进制的7 #### 五、字符串操作 **6. 字符串大小写转换** Java中的`String`类提供了用于转换字符串大小写的方法: - `...

Global site tag (gtag.js) - Google Analytics