Java移位运算符详解实例
移位运算符它主要包括:左移位运算符(<<)、右移位运算符(>>>)、带符号的右移位运算符(>>),移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。
| 运算符 | 含义 |
| << | 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) |
| >> | "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. |
| >>> | "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0 |
1.左移运算符
左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方,例如下面的例子。
public class test{
public static void main(String[] args) {
int a=2,b=2,c;
c=a<<b;
System.out.print("a 移位的结果是"+c);
}
}
输出结果:8
分析上面代码,2 的二进制是00000010,它向左移动2 位,就变成了00001000,即8。如果从另一个角度来分析,它向左移动2 位,其实就是乘上2 的2 次方,结果还是8
2.无符号右移运算符
右移运算符无符号用“>>>”表示,是将运算符左边的对象向右移动运算符右边指定的位数,并且在高位补0,其实右移n 位,就相当于除上2 的n 次方
public class test{
public static void main(String[] args) {
int a=16;
int b=2;
System.out.println("a 移位的结果是"+(a>>>b));
}
}
输出结果 :4
分析上面代码:16 的二进制是00010000,它向右移动2 位,就变成了00000100,即4。如果从另一个角度来分析,它向右移动2 位,其实就是除以2 的2 次方,结果还是4
3.带符号的右移运算符
带符号右移运算符用“>>”表示,是将运算符左边的运算对象,向右移动运算符右边指定的位数。如果是正数,在高位补零,如果是负数,则在高位补1
public class test{
public static void main(String[] args) {
int a=16;
int c=-16;
int b=2;
int d=2;
System.out.println("a 的移位结果:"+(a>>b));
System.out.println("c 的移位结果:"+(c>>d));
}
}
输出结果: 4和-4
分析上面代码:
a 的值是16转换成二进制是00010000,让它右移两位成00000100 即4,c 的值是-16转换成二进制是11101111,让它右移一位成11111011 即-4
Java移位运算符详解实例的更多相关文章
- Java移位运算符详解实例——左移位运算符>>、带符号的右移位运算符>>
移位运算符也针对二进制的“位”,它主要包括:左移位运算符(<<).右移位运算符(>>>).带符号的右移位运算符(>>). 1.左移运算符左移运算符用“< ...
- java移位运算符详解
http://soft.chinabyte.com/database/195/11553695.shtml java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和 ...
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...
- C++移位运算符详解
移位运算符包括左移"<<"和右移">>" 左移运算符<<: 1.无符号 语法格式:需要移位的数字<<移位的次数n ...
- java三元运算符详解
最近在带领实习生中遇到很多新手问与三元运算符有关的java题目,多数为代码结果题,少数为应用题.鉴于很多资料上对于java三元运算的讲解过于简单,网上的资料与题目也不是很完善,对于结果答案分析不一,故 ...
- Java:Java的<<<移位运算符详解
1) 左移运算(<<) 左移就是把所有位向左移动几位 如: 12 << 2 意思就是12向左移动两位 12的二进制是: 0000 1100 通过这个图我们 ...
- Java:Java的^运算符详解
按位异或运算符(^)是二元运算符,要化为二进制才能进行计算,在两个操作数中,如果两个相应的位相同,则运算结果为0,否则1:例如:int a=15:int b=a^8;运算结果为:a=15:b=7:a( ...
- Net is as typeof 运行运算符详解 net 自定义泛型那点事
Net is as typeof 运行运算符详解 概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Ti ...
- Java 序列化Serializable详解
Java 序列化Serializable详解(附详细例子) Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连 ...
随机推荐
- 《java入门第一季》之Arrays类
前面介绍了排序问题(见博客http://blog.csdn.net/qq_32059827/article/details/51362390):二分查找问题(见博客http://blog.csdn.n ...
- 移动App设计的十条建议
原文链接: 10 Key Design Tips for Great Mobile Apps 原文日期: 2014年03月24日 翻译日期: 2014年04月01日 使用Android和iOS编写一个 ...
- TCP的核心系列 — ACK的处理(二)
本文主要内容:tcp_ack()中的一些细节,如发送窗口的更新.持续定时器等. 内核版本:3.2.12 Author:zhangskd @ csdn 发送窗口的更新 什么时候需要更新发送窗口呢? (1 ...
- android本地音乐播放器
乐乐音乐播放器更新到2.0版本了,之前1.0版本更多的是试验性实践,这次更新的2.0版本,更多的是将1.0的功能移植到2.0,在界面和皮肤风格上,参考了 天天动听 界面,在歌词显示方面 与 1.0 版 ...
- erlang在redhat上的安装
erlang在redhat上的安装 1) 下载源码包: http://www.erlang.org/download/otp_src_17.3.tar.gz 2) RHEL6.4预安装包 $ yum ...
- ZooKeeper leader election
Paxos是分布式应用中解决同步问题的核心.作为应用研发工程师,我们总是倾向于使用一种相对简洁的方式实现复杂的算法.ZooKeeper leader election实现就是一个非常好的参考. 其实现 ...
- 为何我会喜欢封闭的apple?
原来本猫喜欢的手机是简单的塞班系统,nokia的E72i,超经典吧!就是最近都有把它充满电重新拿出来用的冲动呀.可惜无奈的是上面的应用太少呀!原来PC和笔记本装的是各种清一色的windows系统,从3 ...
- CALayer简介
一.什么是CALayer * 在iOS系统中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. * 其实UIView之所以 ...
- MyBatis 框架之快速入门程序
一.使用 IDEA 快速创建 Maven 项目 关于如何快速创建 Maven 项目,这个可以参考下面这篇文章: Maven 项目管理工具基础入门系列(一) 二.快速配置 MyBatis 依赖 jar ...
- wamp 服务监控和启动
近日我的 wamp 莫名其妙的崩溃重启,apache 能自动起来, mysql 却悲剧了. 于是有了下面的wamp服务监控和启动的批处理文件 @echo off rem define loop tim ...