说明

我们平时在看JDK源码的过程中会看到开发者会大量的使用移位运算符,那么移位运算是怎么计算的呢?通过下文的测试代码就可以知道了。

测试代码
package com.leo.demo.othertest;/*** @ClassName: ByteDemoTest* @Description: 关于位运算的测试* <p>* 移位运算符* 把整数的二进制位进行左移或右移* 按位左移 << ,右侧补0,* 按位右移 >> ,左侧补符号位(最高位)* 无符号按位右移 >>> , 左侧补0* @Author: leo825* @Date: 2019-10-09 14:36* @Version: 1.0*/
public class ByteDemoTest {public static void main(String[] args) {int xx = 20;/*** xx在内存中的二进制形式为:* 0000 0000 0000 0000 0000 0000 0001 0100* 左移1位为:xx << 1* 0000 0000 0000 0000 0000 0000 0010 1000**/System.out.println(xx + "  << 之后为: " + (xx << 1));//即20*2=40/*** xx在内存中的二进制形式为:* 0000 0000 0000 0000 0000 0000 0001 0100* 右移1位为:xx >> 1* 0000 0000 0000 0000 0000 0000 0000 1010**/System.out.println(xx + "  >> 之后为: " + (xx >> 1));//即20/2=10xx = -20;/*** xx在内存中的二进制形式为:* 1111 1111 1111 1111 1111 1111 1110 1100* 左移1位为:xx << 1* 1111 1111 1111 1111 1111 1111 1101 1000* 负数补码转原码:补码的补码就是原码1000 0000 0000 0000 0000 0000 0010 1000*/System.out.println(xx + " << 之后为: " + (xx << 1));/*** xx在内存中的二进制形式为:* 1111 1111 1111 1111 1111 1111 1110 1100* 右移1位为:xx >> 1* 1111 1111 1111 1111 1111 1111 1111 0110* 负数补码转原码:补码的补码就是原码1000 0000 0000 0000 0000 0000 0000 1010*/System.out.println(xx + " >> 之后为: " + (xx >> 1));xx = 20;/*** xx在内存中的二进制形式为:* 0000 0000 0000 0000 0000 0000 0001 0100* 无符号移一位:xx>>>1* 0000 0000 0000 0000 0000 0000 0000 1010*/System.out.println(xx + "  >>> 之后为: " + (xx >>> 1));xx = -20;/*** xx在内存中的二进制形式为:* 1111 1111 1111 1111 1111 1111 1110 1100* 无符号移一位:xx>>>1* 0111 1111 1111 1111 1111 1111 1111 0110*/System.out.println(xx + " >>> 之后为: " + (xx >>> 1));}
}

下面是运行结果:

20  << 之后为: 40
20  >> 之后为: 10
-20 << 之后为: -40
-20 >> 之后为: -10
20  >>> 之后为: 10
-20 >>> 之后为: 2147483638

java位于算——一个测试搞懂位运算相关推荐

  1. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

  2. 一文搞懂 位运算 异或(Java实现)

    提起异或想必很多小伙伴们既熟悉又陌生,熟悉是因为好像在离散数学或者学某个编程语言 时听过这个东西,而陌生呢,则是因为自己平时并没有用过,以至于当在某个场景 (我猜是在看 题解或者某篇博客时)  看到这 ...

  3. JAVA每个初学者都应该搞懂的问题 还可以比较基础

    还可以比较基础 转自http://blog.csdn.net/devillyd/article/details/2486520 对于这个系列里的问题,每个学Java的人都应该搞懂.当然,如果只是学Ja ...

  4. 学习java多线程,这必须搞懂的这几个概念

    转载自 学习java多线程,这必须搞懂的这几个概念,很重要. 同步和异步 同步,Synchronous,即调用方法开始,一旦调用就必须等待方法执行完返回才能继续下面的操作. 举个例子,你去银行ATM取 ...

  5. 一个案例搞懂工厂模式和单例模式

    一个案例搞懂工厂模式和单例模式 1 单例模式 一个对象只有一个实例 单例类必须自己创建自己的唯一实例. 单例类必须给所有其他对象提供这一实例. 注意:所有的单例模式,应当使其构造方法私有化. 1.1 ...

  6. 学了这么久Java都没搞懂位运算符

    大家好,我是贺贺,今天跟大家聊聊Java中的位运算符,说起来位运算符不知道你想起了什么,我是想起了二进制. 常用的运算符 在Java语言中,官方给我们提供了极为丰富的运算操作,但是常用的,好像也就是算 ...

  7. java do po dto_彻底搞懂DAO,PO,BO,DTO,VO,DO

    原标题:彻底搞懂DAO,PO,BO,DTO,VO,DO 有干货,就分享,点上面的蓝字"测试之道"关注. 上才艺,哦不,上图... Entity 最常用实体类,基本和数据表一一对应, ...

  8. 一个注解搞懂 Sentinel,@SentinelResource总结

    @SentinelResource可以说是Sentinel学习的突破口,搞懂了这个注解的应用,基本上就搞清楚了 Sentinel 的大部分应用场景. 一.@SentinelResource 解析 Se ...

  9. 5分钟快速搞懂位、字节、字、字长

    位(bit) 位是最基本的概念,在计算机中,由于只有逻辑0和逻辑1的存在,因此很多东西.动作.数字都要表示为一串二进制的字码例如: 1001 0000 1101等等.其中每一个逻辑0或者1便是一个位. ...

最新文章

  1. 常见光纤收发器组网方式介绍
  2. 带着canvas去流浪系列之四 绘制散点图
  3. java的平方分之x的平方加xy_Java面试宝典_基础编程练习题_完全平方数
  4. aspose excel中文文档_Excel实战技巧,如何将阿拉伯数字快速转换为中文大小写格式?...
  5. p40_数据交换方式
  6. EMNLP'21 | 检索式对话情感回复
  7. vrrp 的mac是怎么算出来的_宇宙总质量约10^55kg,与大家掰一掰是怎么算出来的
  8. java转换ppt,ppt转成图片 乱码问题解决
  9. c++ builder 2010论坛_CHiF中国血液创新论坛 | 领域大咖带您开启CLL的个体化治疗之门...
  10. Iocomp ActiveX/VCL Ultra Pack Crack
  11. IDEA---SVN安装及配置
  12. 【超详细】Java实现学生信息管理系统
  13. 飞思卡尔16位单片机(一)——飞思卡尔单片机简介
  14. android 小说下载器 源码 分享
  15. 逆袭-2014年中电投篮球赛札记_02【转】
  16. 7月编程排行榜新鲜出炉,再次上演神仙打架!
  17. 找回密码功能 java_Java实现邮件找回密码功能
  18. Zbar的安装及环境配置(环境:VS2022、64位Win10、OpenCV3.6.0)
  19. 顽石互动创始人吴刚:走高品质的发展道路
  20. pentile 子像素_OLED像素排列

热门文章

  1. Super BOM应用步骤总结
  2. 修改SAP系统字段描述的方法
  3. 单位银行结算账户如何变更
  4. 惨绝人寰的日期函数,用的方便
  5. “90后”变“韭零后”,大数据告诉你谁是基民主力军?
  6. 百度和吉利合作造车,数据揭秘百度造车、拆股背后逻辑
  7. get这款工具,不会机器学习也能轻松搞定深度分析
  8. 操作系统使用户和计算机的接口 对吗,计算机操作系统教程--核心与设计原理习题10答案...
  9. linux透明大页内存,rhel7.2 禁用透明的大页内存--transparent_hugepage(THP)
  10. python内置数据结构教程第四版答案_Python数据结构--内置数据结构