位运算符:&,|,^,~,<<,>>
& (按位与):只有对应的两个二进制位均为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. 第二次冲刺spring会议(第六次会议)

    [例会时间]2014/5/8 21:15 [例会地点]9#446 [例会形式]轮流发言 [例会主持]马翔 [例会记录]兰梦 小组成员:兰梦 ,马翔,李金吉,赵天,胡佳 奇

  2. Windows文件监视器 1.0 绿色版

    软件名称:软件名称: Windows文件监视器 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP / Win2008 软件大小: 1 ...

  3. Microsoft SqlSever 数据库--软谋1

    百度百科--Microsoft SqlSever SQL是英文Structured Query Language的缩写,意思为结构化查询语言.SQL语言的主要功能就是同各种数据库建立联系,进行沟通.按 ...

  4. 一个有用的shell脚本

    #!/bin/bash #if [ $1 -eq null ]; then # echo "please input params1!" # exit #fi #if [ $2 - ...

  5. Java自学之路---DotCom

    引言 我从接触编程以来,一直是一个C/C++程序猿,因为我喜欢编程时,那种接地气的感觉,认为只有自己管理内存的使用,心理才踏实.但随着工作中不断增加的见闻,不断的从博客和源码中获得新的见解,我发现这个 ...

  6. redhat 安装hadoop1.2.1伪分布式

    完整安装过程参考:http://www.cnblogs.com/shishanyuan/p/4147580.html 一.环境准备    1.安装linux.jdk      2.下载hadoop2. ...

  7. 《Windows驱动开发技术详解》之派遣函数

    驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的.用户模式下所有对驱动程序的I/O请求,全部由操作系统转化为一个叫做IRP的数据结构,不同的IRP数据会被“派遣”到不同 ...

  8. 利用朴素贝叶斯算法进行分类-Java代码实现

    http://www.crocro.cn/post/286.html 利用朴素贝叶斯算法进行分类-Java代码实现  鳄鱼  3个月前 (12-14)  分类:机器学习  阅读(44)  评论(0) ...

  9. iOS 开发者旅途中的指南针 - LLDB 调试技术

    文章转载于:iOS 开发者旅途中的指南针 - LLDB 调试技术 今天给大家介绍的内容,无关乎任何功能性开发技术,但又对开发的效率影响至深,这就是调试技术. 何为调试呢,比如我们用 print 函数在 ...

  10. iOS 2x 3x

    iOS中: 备注: Retina是一种显示技术,可以将把更多的像素点压缩至一块屏幕里,从而达到更高的分辨率并提高屏幕显示的细腻程度.而其最初该技术是用于苹果的iPhone4上.其屏幕分辨率为960×6 ...