Java中的位运算符、移位运算
一.位运算
Java中有4个位运算,它们的运算规则如下:
(1)按位与 (&) :两位全为1,结果为1,否则为0;
(2)按位或 (|) :两位有一个为1,结果为1,否则为0;
(3)按位取反(~):0 变 1, 1变0;
(4)按位异或(^):两位,如果相同,结果为0;如果不同,结果为1;
注意:
(1)位运算中的 符号位(最高位)也跟着变;
(2)位运算符与逻辑运算符(逻辑与&&、逻辑或||、逻辑非! )有点相似。但是,逻辑运算符只能操作boolean变量
(也就是左右两边的值都是boolean值);
二.位运算应用
(1) ~5 = ?
a) 5的补码为:
00000000 00000000 00000000 00000101
b) 5的按位取反(~)为:
11111111 11111111 11111111 11111010
注意:因为高位数是1(负数),所以要将该补码转换为原码;如果高位数是0(正数)的话, 就不用将补码转为原码,因为正数的原码、反码、补码都一样。
c) 将该负数的补码转为反码:
11111111 11111111 11111111 11111001
d) 将该负数的反码转为原码:
10000000 00000000 00000000 00000110
e) 将二进制原码 转换为 十进制:
10000000 00000000 00000000 00000110 = 0 * 2^0 + 1 * 2^1 + 1 * 2^2 = 0+2+4 = -6 (最高位为1,所以为负数)
三. 移位运算:
Java中有3个移位运算符。
(1) 算术右移 (>>): 低位溢出,符号位不变,并用符号位补溢出的高位;
例如:a >> b :a是要移动的数,b是要移动的位数,下面同理;
(2) 算术左移(<< ): 符号位不变,低位补0;
(3) 逻辑右移(>>>): 低位溢出,高位补0;注意:逻辑右移(>>>)中的 符号位(最高位)也跟着变;
四. 注意点:
位运算与移位运算,都是使用的二进制的补码,进行操作的,切忌!
Java中的位运算符、移位运算的更多相关文章
- Java中的位运算符
Java提供的位运算符有:左移( << ).右移( >> ) .无符号右移( >>> ) .位与( & ) .位或( | ).位非( ~ ).位异或( ...
- Java中的位运算符 &、|、^、~、<< 和 >>
一.& 按位与运算符 5 & 3 = 1 5转换为二进制:0000 0000 0000 0000 0000 0000 0000 0101 3转换为二进制:0000 0000 0000 ...
- Java 逻辑运算符、位运算符、移位操作符 总结(Java 学习中的小记录)
Java 逻辑运算符.位运算符.移位操作符 总结 作者:王可利(Star·星星) 逻辑运算符,表格如下: 解析逻辑运算符表: 1.与 (&) 特点:两个都为真的时候,结果为真.两个为 ...
- Java学习路线:Java中的位移运算符介绍
学习java本来就是一件日积月累的事情,或许你通过自学能掌握一些皮毛技术,学到java的一些基本大面,但想要做到精通,还是需要自己技术的日积月累和工作经验的不断积累. 今天给大家分享的技术知识是:ja ...
- 聊一聊Java中的各种运算符
计算机之所以叫“计算机”,其最基本用途之一就是运算,对应刚刚接触Java的小伙伴而言,熟悉并掌握Java中的各种运算符及其在表达式中的运算优先级是十分必要的. 算术运算 算术运算主要用来处理数学中的加 ...
- 聊一聊Java中的各种运算符(转载)
计算机之所以叫"计算机",其最基本用途之一就是运算,对应刚刚接触Java的小伙伴而言,熟悉并掌握Java中的各种运算符及其在表达式中的运算优先级是十分必要的. 算术运算 算术运算主 ...
- [java基础] 002 - 位运算符的详解和妙用
一:位运算符详解 位运算符主要用来对操作数二进制的位进行运算.按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值. Java 语言中的位运算符分为位逻辑运算符和位移运算符两类, ...
- Java中常用的运算符
运算符是一种“功能”符号,用以通知 Java 进行相关的运算,Java 语言中常用的运算符可分为如下几种: 算数运算符.赋值运算符.比较运算符.逻辑运算符.条件运算符. 一.算数运算符 Java 中常 ...
- Java学习笔记五:Java中常用的运算符
Java中常用的运算符 运算符是一种“功能”符号,用以通知 Java 进行相关的运算.譬如,我们需要将变量 score 的值设置为 20 ,这时候就需要一个“=”,告诉程序需要进行赋值操作. Java ...
随机推荐
- js div 内容显示分页
由于工作需要 div固定大小 而内容不定 所以 如果内容过多自然就显示不出来了 所以 需要分页一类的功能下面是代码 <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- 解决了clang: error: linker command failed with exit code 1 (use -v to see invocation) 解决方法
1.”Build Settings”->”Enable Bitcode”设置为NO 2.TARGETS --> Build Settings --> Architectures - ...
- Java之JDOM生成XML和解析
一.生成XML文件 1.JDOM是对Java原始的类进行了封装.让解析XML文件变得很方便 2.创建一个XML文件的根节点: Element root = new Element("HD&q ...
- html 7大知识点
HTML是web前端开发的基础,学习前端的人都是先从html学起的. 关于HTML有一些必备的知识点,这些知识点都是HTML中最基本的内容,也是前端面试最常问的知识点. 1.网页结构网页结构一般都包含 ...
- 五毛的cocos2d-x学习笔记01-创建项目
终于准备开始学习cocos2d-x了.因为想和同学一起做游戏参加比赛,所以打算学习很热的Cocos2d-x.因为已经学习了C++,所以我想入门应该不是很困难.再加上官网有中文教程以及多不胜数的游戏开发 ...
- ansible笔记
ansible 资料 ansible 配置 ansible inventory配置文件 ansible模块 http://www.cnblogs.com/iois/p/6216936.html ans ...
- 新到的Mac配置Java开发环境
今天Mac到手,需要配置一些用到的开发环境,在这里做一些纪录. 1. 下载Eclipse,地址:http://www.eclipse.org/downloads/,因为个人需求,所以下载的是Java ...
- centos7/redhat7 将网卡名字改成eth样式的方法
方法/步骤 1. 编辑 /etc/sysconfig/grub 找到“GRUB_CMDLINE_LINUX”这一行
- JAVA语言的素数判断,随机数,函数调用
近来刚学JAVA,就从JAVA写起吧,JAVA判别素数,其实方法和C/C++没什么区别,主要就是想谈一下,其中包括的3个点. (1)JAVA语言产生随机数,random函数,定义参数max的作用是给出 ...
- The Power of Reading——英语学习小技巧之七
This method is "The Power of Reading" and it comes from an article by Dr.Stephen Krashen. ...