1)java中无符号右移:>>>,下面是一个int型的负数,然后每次移动一位。

int k = -0x123;System.out.println(Integer.toBinaryString(k));
int n = k>>>1;System.out.println(Integer.toBinaryString(n));
n = n>>>1;System.out.println(Integer.toBinaryString(n));
n = n>>>1; System.out.println(Integer.toBinaryString(n));
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

11111111111111111111111011011101
1111111111111111111111101101110
111111111111111111111110110111
11111111111111111111111011011
1111111111111111111111101101
111111111111111111111110110
11111111111111111111111011
1111111111111111111111101
111111111111111111111110
11111111111111111111111
1111111111111111111111
111111111111111111111
11111111111111111111
1111111111111111111
111111111111111111
11111111111111111
1111111111111111
111111111111111
11111111111111
1111111111111
111111111111
11111111111
1111111111
111111111
11111111
1111111
111111
11111
1111
111
11
1
0
0
0

2)下面是一个整型int的正数的无符号移位:因为正数的最前面一位是符号位为0,因此一个32位的正数一般都是从第一个非零开始表示,前面的零都省略表示出来。

int k = 0x123;System.out.println(Integer.toBinaryString(k));
int n = k>>>1;System.out.println(Integer.toBinaryString(n));
n = n>>>1;System.out.println(Integer.toBinaryString(n));
n = n>>>1; System.out.println(Integer.toBinaryString(n));
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

100100011

10010001

1001000

100100

10010

1001

100

10

1

0

0

0

0

3)有符号右移“>>”,负数右移如下:每次移位都是从最右边移除一位,然后最前面添加一位“1”来填充,因此总的位数不变,依旧是32位。

int k = -0x123;System.out.println(Integer.toBinaryString(k));
int n = k>>1;System.out.println(Integer.toBinaryString(n));
n = n>>1;System.out.println(Integer.toBinaryString(n));
n = n>>1; System.out.println(Integer.toBinaryString(n));
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

11111111111111111111111011011101
11111111111111111111111101101110
11111111111111111111111110110111
11111111111111111111111111011011
11111111111111111111111111101101
11111111111111111111111111110110
11111111111111111111111111111011
11111111111111111111111111111101
11111111111111111111111111111110
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111

4)有符号右移“>>”,正数右移如下:每次移位都是从最右边移除一位,然后最前面添加一位“0”来填充,因此总的位数不变,依旧是32位,但是只显示首位为非零的开始。

int k = 0x123;System.out.println(Integer.toBinaryString(k));
int n = k>>1;System.out.println(Integer.toBinaryString(n));
n = n>>1;System.out.println(Integer.toBinaryString(n));
n = n>>1; System.out.println(Integer.toBinaryString(n));
n = n>>1; System.out.println(Integer.toBinaryString(n));
n = n>>1; System.out.println(Integer.toBinaryString(n));
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

100100011
10010001
1001000
100100
10010
1001
100
10
1
0
0
0

5)左移,只有有符号数左移。正数左移。

int k = 0x123;System.out.println(Integer.toBinaryString(k));
int n = k<<1;System.out.println(Integer.toBinaryString(n));
n = n<<1;System.out.println(Integer.toBinaryString(n));
n = n<<1; System.out.println(Integer.toBinaryString(n));
n = n<<1; System.out.println(Integer.toBinaryString(n));
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

100100011
1001000110
10010001100
100100011000
1001000110000
10010001100000
100100011000000
1001000110000000
10010001100000000
100100011000000000
1001000110000000000
10010001100000000000
100100011000000000000
1001000110000000000000
10010001100000000000000
100100011000000000000000
1001000110000000000000000
10010001100000000000000000
100100011000000000000000000
1001000110000000000000000000
10010001100000000000000000000
100100011000000000000000000000
1001000110000000000000000000000
10010001100000000000000000000000
100011000000000000000000000000
1000110000000000000000000000000
10001100000000000000000000000000
11000000000000000000000000000
110000000000000000000000000000
1100000000000000000000000000000
11000000000000000000000000000000
10000000000000000000000000000000
0
0
0

6)左移,只有有符号数左移。负数左移。

int k = -0x123;System.out.println(Integer.toBinaryString(k));
int n = k<<1;System.out.println(Integer.toBinaryString(n));
n = n<<1;System.out.println(Integer.toBinaryString(n));
n = n<<1; System.out.println(Integer.toBinaryString(n));
n = n<<1; System.out.println(Integer.toBinaryString(n));
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

11111111111111111111111011011101
11111111111111111111110110111010
11111111111111111111101101110100
11111111111111111111011011101000
11111111111111111110110111010000
11111111111111111101101110100000
11111111111111111011011101000000
11111111111111110110111010000000
11111111111111101101110100000000
11111111111111011011101000000000
11111111111110110111010000000000
11111111111101101110100000000000
11111111111011011101000000000000
11111111110110111010000000000000
11111111101101110100000000000000
11111111011011101000000000000000
11111110110111010000000000000000
11111101101110100000000000000000
11111011011101000000000000000000
11110110111010000000000000000000
11101101110100000000000000000000
11011011101000000000000000000000
10110111010000000000000000000000
1101110100000000000000000000000
11011101000000000000000000000000
10111010000000000000000000000000
1110100000000000000000000000000
11101000000000000000000000000000
11010000000000000000000000000000
10100000000000000000000000000000
1000000000000000000000000000000
10000000000000000000000000000000
0
0
0

java的移位运算详解(举例说明)的更多相关文章

  1. java中位运算和移位运算详解

    一.位运算 (1)按 位 与 & 如果两个相应的二进制形式的对应的位数都为1,则结果为1,记为同1为1,否则为0.首先我们看一下对正数的运算        分别看一下正数和负数的具体运算步骤 ...

  2. Java:Java的<<<移位运算符详解

    1) 左移运算(<<)       左移就是把所有位向左移动几位 如:   12 << 2    意思就是12向左移动两位 12的二进制是: 0000 1100 通过这个图我们 ...

  3. C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序

    C#中缓存的使用   缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可:  <%@ Outp ...

  4. java之AbstractStringBuilder类详解

    目录 AbstractStringBuilder类 字段 构造器 方法   public abstract String toString() 扩充容量 void  expandCapacity(in ...

  5. Java的JDBC事务详解

    Java的JDBC事务详解         分类:             Hibernate              2010-06-02 10:04     12298人阅读     评论(9) ...

  6. Java编程配置思路详解

    Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...

  7. Java基础之 数组详解

    前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...

  8. java ssl https 连接详解 生成证书 tomcat keystone

    java ssl https 连接详解 生成证书 我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over ...

  9. Java内存模型(JMM)详解

    在Java JVM系列文章中有朋友问为什么要JVM,Java虚拟机不是已经帮我们处理好了么?同样,学习Java内存模型也有同样的问题,为什么要学习Java内存模型.它们的答案是一致的:能够让我们更好的 ...

随机推荐

  1. Page5:状态转移矩阵及性质、连续线性系统离散化及其性质[Linear System Theory]

    内容包含脉冲响应矩阵和传递函数矩阵之间的关系,状态转移矩阵及性质,以及线性连续系统离散化及其性质

  2. Xcode编译警告Assigning to 'id<XXXDelegat> ——Nullable' from incompatible type 'XXXView *const_strong'

    编译报警告 可能是 自定义分类使用协议时出现与父类协议的冲突 解决方法如下:    

  3. oracle中in和exists的区别

    IN适合于外表大而内表小的情况:EXISTS适合于外表小而内表大的情况. 性能上的比较 比如Select * from T1 where x in ( select y from T2 ) 执行的过程 ...

  4. 运维自动化工具ansible

    企业级自动化运维工具应用实战ansible 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出 ...

  5. vue在页面嵌入别的页面或者是视频2

    vue在页面嵌入别的页面或者是视频 以下是嵌入页面 <iframe name="myiframe" id="myrame" src="http: ...

  6. js中的offsetLeft和style.left

    (1)style.left是带单位"px"的,而offsetLeft没有单位,另外,style.left必须是内联样式,或者在JS中通过style.left赋值,否则取得的将为空字 ...

  7. centos6和7关闭防火墙

    centos6 service iptables stop       临时 chkconfig iptables off 永久 service iptables status centos7 sys ...

  8. 2018-2019-1 20189221《Linux内核原理与分析》第五周作业

    2018-2019-1 20189221<Linux内核原理与分析>第五周作业 实验四 实验过程 当用户态进程调用一个系统调用时,cpu切换到内核态并开始执行一个内核函数. 在Linux中 ...

  9. 《全栈性能Jmeter》-3JMeter体系结构

  10. [Java in NetBeans] Lesson 04. Class / Objects

    这个课程的参考视频和图片来自youtube. 主要学到的知识点有: Class: Blueprint for an object. (e.g. dog is a class) Object: cust ...