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. Ubuntu启动时a start job is running for dev-disk-by延时解决

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  2. Boost 常用的库

    boost是一系列C++模板库组成的免费,可移植,开源的程序库.网络上关于boost的文章已经很多.     这里摘记一些库的信息,供自己日后参考. 0.foreach - BOOST_FOREACH ...

  3. MyBati__mapper 中取值(#{} 或${}) 以及 parameterType为(基本类型 或复杂类型)

    参考资料: MyBatis学习笔记(三)——parameterType为基本类型时的使用方法 MyBatis的传入参数parameterType类型 1. MyBatis的传入参数parameterT ...

  4. python QT 编程之路

    pyQT4  的Wheel 下载 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4 python发送GET 或者 POST请求 https://www ...

  5. jquery 请求返回的几种方式

    页面代码 <form id="form1" runat="server"> <div> <p> Ajax请求ashx返回js ...

  6. Amazon SQS(Simple Queue Service) 简单介绍

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hongchangfirst/article/details/25877059 SQS即Simple ...

  7. 运维自动化工具ansible

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

  8. .NET Core 指南 官方

    https://docs.microsoft.com/zh-cn/dotnet/core/index

  9. 矩形嵌套(dp)

    矩形嵌套 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...

  10. PHP 生成器入门

    https://juejin.im/entry/5b4c2d76f265da0f697029ad PHP 在 5.5 版本中引入了「生成器(Generator)」特性,不过这个特性并没有引起人们的注意 ...