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. php之变量和常量

    PHP中的变量用一个美元符号后面跟变量来表示.变量名是区分大小写的. 变量与PHP中其它的标签一样遵循相同的规则.一个有效的变量名有字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线. 按照 ...

  2. jdbc实现分页,需要前端传当前页码

    1.封装一个公共实体类用于返回:实体数据,当前页,总页数,总条数,每页多少条 public class PageInfo<T> { //一页显示的记录数 private int numPe ...

  3. Chap6:风险与监督[《区块链中文词典》维京&甲子]

  4. NOIP 2018 day1 题解

    今年noip的题和去年绝对是比较坑的题了,但是打好的话就算是普通水准也能350分以上吧. t1: 很显然这是一个简单的dp即可. #include<iostream> #include&l ...

  5. Django 发送电子邮件

    官方片段: 虽然Python使得通过smtplib 模块发送电子邮件相对容易,但Django提供了一些轻量级包装.提供这些包装器是为了使发送电子邮件更加快速,以便在开发过程中轻松测试电子邮件发送,并为 ...

  6. 配置svn用户及权限

    权限使用的用户名,必须在passwd文件里面存在,权限配置文件的修改立即生效,不必重启SVN: 例如创建一个运维组 用户组格式: [groups] yunwei = ligang,liming 其中, ...

  7. MySQL 从库down机

    MySQL 从库down机中午突然down机,重启后,从库同步报主键重复的错误. Could not execute Write_rows event on table operation_maste ...

  8. oracle对日期date类型操作的函数

    无论是DATE还是timestamp都可以进行加减操作 加一个简单的数来增加天 max,min来求其最大最小日期 avg,sum就只能先转成数字类型才可用 使用内置函数add_months来增加年和月 ...

  9. 常用笔记:PHP

    [PHP] date_default_timezone_set(PRC); //时区设置 header("Content-type: text/html; charset=utf-8&quo ...

  10. (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m

    在linux环境下配置项目运行环境时,部署的人员都会分配一下内存,以保证程序正常的运行.其实在开发的时候(window系统),就已经涉及到内存分配了,只是这些参数有默认值,因此一直没有去重视它. 以M ...