`
hujin1979
  • 浏览: 78688 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java位运算详解

阅读更多
1、按二进制位进行“或”运算。 运算规则: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即可得到。    
 
 2、异或运算符(^)  参加运算的两个数据,按二进制位进行“异或”运算。 运算规则: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。  从上面的例题可以清楚的看到这一点。  
 
3、取反运算符(~)  参加运算的一个数据,按二进制位进行“取反”运算。  运算规则:~1=0;   ~0=1;        即:对一个二进制数按位取反,即将0变1,1变0。     使一个数的最低位为零,可以表示为:a&~1。  ~1的值为1111111111111110,再按“与”运算,最低位一定为0。因为“~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。
 
4、左移运算符(<<)  将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。  例:a = a << 2 将a的二进制位左移2位,右补0, 左移1位后a = a * 2;   若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。 
 
5、右移运算符(>>)  将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。 操作数每右移一位,相当于该数除以2。 例如:a = a >> 2 将a的二进制位右移2位, 左补0 or 补1 得看被移数是正还是负。     >> 运算符把 expression1 的所有位向右移 expression2 指定的位数。expression1 的符号位被用来填充右移后左边空出来的位。向右移出的位被丢弃。 例如,下面的代码被求值后,temp 的值是 -4:    -14 (即二进制的 11110010)右移两位等于 -4 (即二进制的 11111100)。    
var temp = -14 >> 2      无符号右移运算符(>>>)     >>> 运算符把 expression1 的各个位向右移 expression2 指定的位数。右移后左边空出的位用零来填充。移出右边的位被丢弃。 例如:var temp = -14 >>> 2  变量 temp 的值为 -14 (即二进制的 11111111 11111111 11111111 11110010),向右移两位后等于 1073741820 (即二进制的 00111111 11111111 11111111 11111100)。 
 
6、复合赋值运算符  位运算符与赋值运算符结合,组成新的复合赋值运算符,它们是: &=    例:a &= b        相当于a=a & b  |=    例:a |= b        相当于a=a | b >>=   例:a >>= b       相当于a=a >> b <<= 例:a <<= b       相当于a=a << b  ^=   例:a ^= b       相当于a=a ^ b  运算规则:和前面讲的复合赋值运算符的运算规则相似。   不同长度的数据进行位运算  如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。  以“与”运算为例说明如下:我们知道在C语言中long型占4个字节,int型占2个字节,如果一个long型数据与一个int型数据进行“与”运算,右端对齐后,左边不足的位依下面三种情况补足,  (1)如果整型数据为正数,左边补16个0。 (2)如果整型数据为负数,左边补16个1。 (3)如果整形数据为无符号数,左边也补16个0。 如:long a=123;int b=1;计算a & b。  如:long a=123;int b=-1;计算a & b。  
如:long a=123;unsigned int b=1;计算a & b。
分享到:
评论

相关推荐

    Java位运算符详解[文].pdf

    Java位运算符详解[文].pdf

    位运算详解(通过excel表格详细对位运算进行讲解)

    正在学习位运算的人群

    Java应用开发详解

    对初学JAVA的人非常有帮助,对java的 多线程、集合类、IO、图形界面、网络编程、异常处理、数组复制与排序及位运算都有涉及。

    Java位运算知识点详解

    给大家分享了关于Java位运算的相关知识点内容,有兴趣的朋友们可以学习参考下。

    java语言学习笔记指南

    【】3.Java语言Switch语句详解1.JavaSwitch语句概述【】3.Java语言Switch语句详解3.Java语言Switch语句详解课程资料源码【】3.Java语言Switch语句详解课程资料源码【】4.Java判断与关系运算1.Java关系运算的种类【】...

    Java中BigDecimal的基本运算(详解)

    下面小编就为大家带来一篇Java中BigDecimal的基本运算(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    6年javaEE开发的Word资料合集

    包括165个javaEE学习的Word文件 jstl标准函数 mysql命令详解 javascript 常用JavaScript代码 java位运算大全 java struts2 0经典知识点 ORACLE 经验 Oracle内置SQL函数 分类整理大全 高性能高并发服务器架构 数据库...

    《Java和Android开发实战详解》第2到5章源代码-by 南邮-陈杨

    3.4.3 递增和递减运算 48 3.4.4 关系与条件运算符 49 3.4.5 位运算符 51 3.4.6 指定运算符 54 3.5 数据类型的转换 54 3.5.1 宽化数据类型转换 54 3.5.2 窄化数据类型转换与类型转换运算符 56 习题 57...

    Java8-Stream详解

    Java8-Stream 文章目录Java8-Stream1. Stream1.1 Stream介绍1.1.1 介绍1.1.2 Stream特点1.1.3 直接对集合遍历操作...Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶

    Java BigDecimal详解_动力节点Java学院整理

    借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-074-Java基本语法-运算符-前增运算与后增运算的区别.avi 北京动力节点-Java编程零基础教程-075-Java基本语法-运算符-关系运算符.avi 北京动力节点-Java编程零基础教程-076-Java...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第1章 Java应用分层架构及软件模型  1.1 应用程序的分层体系结构  1.1.1 区分物理层和逻辑层  1.1.2 软件层的特征  1.1.3 软件分层的优点  1.1.4 软件分层的缺点  1.1.5 Java应用的持久化层  1.2 软件的模型 ...

    java基础案例与开发详解案例源码全

    3.5.3 表达式的运算顺序52 3.5.4 优先级和结合性问题52 3.6 选择结构54 3.6.1 顺序语句54 3.6.2 选择条件语句54 3.6.3 switch结构59 3.6.4 经验之谈-常见错误的分析与处理65 3.6.5 Switch和多重if结构比较66 3.7 ...

    java二进制运算基础知识点详解

    在本文里小编给大家分享了关于java二进制运算基础知识点以及实例代码内容,需要的朋友们参考学习下。

    Java基础知识点总结.docx

    运算符号 14 语句 15 函数 15 方法重载(Overloadjing)与重写(Overriding) 16 数组 17 总结 18 三、 常见关键字 20 四、 面向对象★★★★★ 21 五、 封装(面向对象特征之一)★★★★ 23 六、 继承(面向对象...

    二进制图文详解

    二进制图文详解 二进制Binary 2进制 逢二进一的计数规则。 在计算机内部,一切数据都是2进制的!! 2进制的数字 补码 补码本质是一种解决负数问题的算法。 1. 将数据的一半当做负数使用。 2. 补码在内存中是2...

    Java运算符介绍.pptx.pptx

    Java运算符分类 Java运算符主要分为四类:算术运算符、关系运算符、逻辑运算符和位运算符,...位运算符详解 位运算符主要用于处理二进制数据,包括与、或、非、异或和移位等操作,它们可以实现对数据的快速处理和转换。

    MongoDB中的加减乘除运算详解

    主要给大家介绍了关于MongoDB中加减乘除运算的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Global site tag (gtag.js) - Google Analytics