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. Java 输入/输出——字节流和字符流

    1.流的分类 (1)输入流和输出流(划分输入/输出流时是从程序运行所在内存的角度来考虑的) 输入流:只能从中读取数据,而不能向其写入数据. 输出流:只能向其写入数据,而不能从中读取数据. 输入流主要由 ...

  2. dp 单调性优化总结

    对于单调性优化其实更多的是观察dp的状态转移式子的单调性 进而用优先队列 单调队列 二分查找什么的找到最优决策 使时间更优. 对于这道题就是单调性优化的很好的例子 首先打一个暴力再说. f[i][j] ...

  3. 树形dp的深入讨论

    越发向dp深入越发现dp越有意思! 这道题做的时候感觉十分的难,然后看完学长的题解恍然大悟.设状态不好导致想了一中午,一直感觉不可做,其实是自己的状态设的不对,这道题呢,首先是一个求在树上建多个厂,而 ...

  4. iOS更换科大讯飞的key

    我这个APP使用了科大讯飞的"语音评测"功能,之前使用的是我自己注册的科大讯飞账号,在这个账号里面创建的APP,生成的key. 我们公司有公司的key, 同事说可以多个APP公用一 ...

  5. day3_字符串常用方法

    s.upper()s.lower()s.capitalize()s.split(',')s.strip('abc')s.lstrip()s.rstrip()s.replace('old','new') ...

  6. iptables及其在路由器上的应用 (待完善)

    1. iptables基本定义 Table (表名) Explanation (注释) nat nat表的主要用处是网络地址转换,即Network Address Translation,缩写为NAT ...

  7. 哨兵模式下,master选举关键点

    哨兵模式下的选举策略: 1:slave priority越低 ,优先级越高 2:1同等情况下,slave复制的数据越多优先级越高 3:2相同的条件下run id越小越容易被选举

  8. javascript面向对象中继承实现?

    面向对象的基本特征有:封闭.继承.多态. 在javascript中实现继承的方法: 1.原型链(prototype chaining) 2.call()/apply() 3.混合方式(prototyp ...

  9. RSA 时序攻击

    RSA的破解从理论上来讲是大数质数分解,可是就是有一些人另辟蹊径,根据你解密的时间长短就能破解你的RSA私钥. 举一个不恰当但是比较容易理解的例子: 密文0101 私钥0110 明文0100 问题的关 ...

  10. wx鼠标拖动事件

    #coding:UTF- import wx app = wx.App() def dragEVT(event): if event.ButtonDown(): panel1.SetPosition( ...