位运算符:&,|,^,~,<<,>>
& (按位与):只有对应的两个二进制位均为1时,结果才为1。例如,9&5,即00001001&00000101=00000001
|(按位或):只要对应的两个二进制位有一个为1,结果就为1,例如9|5,即00001001|00000101=00001101
^(按位异或):两对应的二进制相异时,结果为1
~(求反运算):~9=~(1001)=0110=6
<<(左移运算):把<<左边的运算数个二进制位全部左移若干位,由<<右边的数指定移动的位数,高位丢弃,低位补零。例如a<<4,a=00000011,则a=00001100
位运算符的妙用:
1.判断奇偶性:
if(a&1)
{
System.out.printIn("a为奇数");
}
if(a&1==0)
{
System.out.printIn("a为偶数");
}
解释:奇数的二进制最低位为1,偶数为0,又因为与0相&,结果都为0,所以如果是奇数,结果为00000001,否则为00000000;
2.交换变量值
a=a^b;
b=a^b;
a=a^b;
解释:先令a=a^b,则b=a^b=(a^b)^b=(b^b)^a=0^a,又因为a^0时,a保持不变(0 0时为0,0 1时为1)
3.求整数平均值
int x;
int y;
int avg=(x&y) +((x^y)>>1);
解释:
因为x>>1相当于x/=2,类似的例子还有x<<1相当于x*=2,x>>2相当于x/=4,x<<2相当于x*=4,那么求x,y的整数平均值,使(x+y)>>1不就得了,为什么还要进行(x&y)+((x^y)>>1)这样的操作呢?

Java学习之位运算符的更多相关文章

  1. Java 逻辑运算符、位运算符、移位操作符 总结(Java 学习中的小记录)

    Java 逻辑运算符.位运算符.移位操作符  总结     作者:王可利(Star·星星) 逻辑运算符,表格如下: 解析逻辑运算符表: 1.与 (&) 特点:两个都为真的时候,结果为真.两个为 ...

  2. Java中的位运算符

    Java提供的位运算符有:左移( << ).右移( >> ) .无符号右移( >>> ) .位与( & ) .位或( | ).位非( ~ ).位异或( ...

  3. (一)《Java编程思想》学习——按位运算符、移位运算符

    (第三章) (一)按位运算符 按位逻辑运算符有: “与”(AND)        & 1&1=1;1&0=0;0&0=0 “或”(OR) | 1|1=1;1|0=1;0 ...

  4. Java学习笔记四——运算符

    算术运算符 加减乘除(+.-.*./)就不说了. 求余运算符% 描述:第一个操作数除以第二个操作数,得到一个整除的结果后剩下的值就是余数 注意:求余预算的结果不一定总是整数,当操作数是浮点数时,结果可 ...

  5. Java学习之位运算和逻辑运算符

    今天看了一下HashMap类的源码,在HashMap的源码中定义了初始空间的大小 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; 当 ...

  6. Java中的位运算符、移位运算

    一.位运算 Java中有4个位运算,它们的运算规则如下: (1)按位与 (&)  :两位全为1,结果为1,否则为0: (2)按位或  (|)   :两位有一个为1,结果为1,否则为0: (3) ...

  7. 【原】Java学习笔记004 - 运算符

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 运算符:对常量 或 ...

  8. [java基础] 002 - 位运算符的详解和妙用

    一:位运算符详解 位运算符主要用来对操作数二进制的位进行运算.按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值. Java 语言中的位运算符分为位逻辑运算符和位移运算符两类, ...

  9. IT兄弟连 Java语法教程 位运算符

    Java定义了几个位运算符,它们都可以用于整数类型(long.int.short.byte以及char).这些运算符对操作数的单个位进行操作.表1 对位运算符进行了总结. 表1  位运算符 由于位运算 ...

随机推荐

  1. 【TestDirector】常见问题分析

    1.IE7无法访问TD 问题原因:兼容性问题 解决方法:步骤一.以系统管理员身份登陆TD: 步骤二.找到TD服务器中TDBIN目录(缺省情况下是C:\Inetpub\TDBIN目录),用编辑器打开st ...

  2. ***C - I love sneakers!(动态规划,分组背包)

    C - I love sneakers! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  3. 高性能MySQL第2,3章性能相关 回顾笔记

    1.  基准测试(benchmark)   不管是新手还是专家都要熟悉基准测试,benchmark测试是对系统的一种压力测试,目标是为了掌握在特定压力下系统的行为.也有其他原因:如重现系统状态,或者是 ...

  4. YaHoo Web优化的14条法则

    Web应用性能优化黄金法则:先优化前端程序(front-end)的性能,因为这是80%或以上的最终用户响应时间的花费所在. 法则1. 减少HTTP请求次数 80%的最终用户响应时间花在前端程序上,而其 ...

  5. Java多线程之~~~使用Exchanger在线程之间交换数据[这个结合多线程并行会有解决很多问题]生产者消费者模型

    http://blog.csdn.net/a352193394/article/details/39503857  Java多线程之~~~使用Exchanger在线程之间交换数据[这个结合多线程并行会 ...

  6. OpenCV——运用于pixels war游戏

    // The "Square Detector" program. // It loads several images sequentially and tries to fin ...

  7. flash 右键菜单隐藏与修改

    来源:http://blog.sina.com.cn/s/blog_7264c84401014fmd.html import flash.ui.ContextMenu;import flash.ui. ...

  8. .net项目svn项目管理文件清单

    You can add the following files to Visual Studio source control: Solution files (*.sln). Project fil ...

  9. java web服务器tomcat介绍【转载】

    机器矩阵2016-08-10 22:14 java程序员亲切地称他为tom猫,看到这只猫可以说明1 服务器部署成功了 ,2 网络是联通的. 到底这只猫是什么来头呢? tomcat是Apache基金会下 ...

  10. asp.net无法触发asp控件的后台方法

    前台代码: <asp:Button ID="btnFinish" runat="server" Text="完成" Font-Size ...