计算机在底层使用的是二进制补码进行运算。

计算规则:

正数的原码、反码、补码是其二进制本身。

负数的原码首先计算其二进制数,然后最高位使用1表示负数,反码是最高位不变其它位取反,补码是在反码的基础上进行+1操作。

System.out.println( 8 >> 1);//正数进行右移位运算

8的二进制是 0000 0000 0000 0000 0000 0000 0000 1000,进行右移1位得到二进制0000 0000 0000 0000 0000 0000 0000 0100,然后转成二进制是4

以此类推

/*   1000

*   0100    4    右移1位

*   0010    2    右移2位

*   0001    1    右移3位

*   0000    0    右移4位

* */

System.out.println( -8 >> 1);//负数进行右移位运算  (右移高位补1)

-8的二进制是1000 0000 0000 0000 0000 0000 0000 1000,这里最高位1表示是负数

/*

* 1000 0000 0000 0000 0000 0000 0000 1000 原码

* 1111 1111 1111 1111 1111 1111 1111 0111 反码

*                                       1

* 1111 1111 1111 1111 1111 1111 1111 1000   补码

* 1 1111 1111 1111 1111 1111 1111 1111 100 位运算得到的是补码然后转到原码

* 1 0000 0000 0000 0000 0000 0000 0000 011

*                                           1

* 1 0000 0000 0000 0000 0000 0000 0000 100 -4  原码

* */

System.out.println(8<<2);//正数进行左移位运算

/*

* 0000 0000 0000 0000 0000 0000 0000 1000  原码

* 0000 0000 0000 0000 0000 0000 0010 0000 位运算 32

*/

System.out.println(-8<<2);//负数进行左移位运算(左移地位补0)

/* 1000 0000 0000 0000 0000 0000 0000 1000   -8的原码

* 1111 1111 1111 1111 1111 1111 1111 0111   反码

* 1111 1111 1111 1111 1111 1111 1111 1000   补码

* 11 1111 1111 1111 1111 1111 1111 100000  位运算

* 10 0000 0000 0000 0000 0000 0000 011111 位运算之后补码

* 10 0000 0000 0000 0000 0000 0000 100000 原码

*  -32

* */

System.out.println(-9>>>2);无符号运算,高位进行补0,低位舍去

/*

* 1000 0000 0000 0000 0000 0000 0000 1001    原码

* 1111 1111 1111 1111 1111 1111 1111 0110 反码

* 1111 1111 1111 1111 1111 1111 1111 0111    补码

* 001111 1111 1111 1111 1111 1111 1111 01    移位   (移位得到的是正数,所以补码就是其本身)

* */

java 无符号运算_java位运算和无符号运算相关推荐

  1. java取余位运算_java位运算

    位移动运算符: < 例如:3 <<2(3为int型) 1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011, 2)把该数字高位(左侧 ...

  2. java double 位运算_JAVA位运算等运算符总结

    JAVA位运算等运算符总结 一.概述 运算符是一种"功能"符号,用以通知 Java 进行相关的运算. Java 语言中常用的运算符可分为如下几种:算术运算符 赋值运算符 比较运算符 ...

  3. java取余位运算_Java位运算基础知识

    在学习Java运算时,补充学习Java位运算. Java位运算 位运算都是针对整数的补码进行位运算. & 按位与运算 先将整数转换为补码 ,然后执行按位与运算,最后将结果返回为十进制,它有如下 ...

  4. 位运算符Java与详解_java位运算符详解

    java位运算符详讲 一.位运算符分类    java中位运算符主要有:按位与&.按位或|.按位非~.按位异或^. 在使用时,需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示.二. ...

  5. java 串口 中文乱码_Java 实现 POS 打印机无驱串口打印(解决中文乱码)

    java串口通信的说明 Java提供了CommunicationAPI(包含于http://www.doczj.com/doc/a82f84d0195f312b3169a53f.htmlm包中)用于通 ...

  6. java 找不到符号变量_java编程找不到符号

    Person.java:7:找不到符号符号:变量age位置:类Persona.age=10;^Person.java:8:找不到符号符号:变量name位置:类Persona.name="小明 ...

  7. 编写一个java打印心程序_java – ?同时打印心脏符号

    很抱歉问一个愚蠢的问题,我们正在尝试将心脏符号从数据库打印到 Java XML文件.但同样的印刷品是"?"不知道我错过了哪里.尝试过char unicode.作为一种练习,我在ma ...

  8. java怎么无参构造方法_Java中如何在无参构造方法中调用有参构造?

    展开全部 一般正常的都是参数多的调用参数少的.有参数的调用无参数的居e68a843231313335323631343130323136353331333365643537多. 当然你要无参调用的参的 ...

  9. java欧元货币输出符号位置_java – 使用unicode显示欧元符号并将字符更改为大写...

    如果问题只是关于欧元标志变得混乱 – 那就是程序 import java.io.*; public class Foo { public static void main (String args[] ...

最新文章

  1. Dubbo 18 问
  2. Linux下取代top的进程管理工具 htop
  3. 在Sharepoint中批量删除大量条目
  4. android arcgis 绘制圆_ArcGIS For Android 定位绘图工具 [中心点,误差圆]
  5. 在指定位置上方出现通用jquery悬浮提示框插件全站通用
  6. AMD CPU真烂!售后服务也很可恶!
  7. asterisk 互联
  8. 【读书笔记0103】Beginning linux programming-shell programming
  9. C语言怎么给程序加上版本号,给自己的程序加上行号
  10. git push错误解决方案
  11. 2020五一建模:C题 饲料混合加工问题 题解
  12. python实时读取串口数据_串口的数据采集、以及数据的实时显示
  13. HDU 2037 (贪心或记忆化搜索)
  14. 用 SpriteKit 做一个逃逸游戏 (2)
  15. SpringMVC整合activiti Modeler
  16. bcdedit用法详解
  17. C语言读取wav文件
  18. 8.22镭速云传上线,这些精彩都安排上了!
  19. php源码中powerby,小龙源码网 - discuz论坛怎么去掉power by discuz版权
  20. 《拍拍二手》微信小程序开发经验谈

热门文章

  1. php分解字符串_php怎么把字符串分解成字符
  2. 计算机网络二级考试类型,二级计算机考试大纲
  3. 东华大学java期末_东华大学数据结构期末复习题!.doc
  4. 计算机网络利弊的作文英语作文,网络的弊端英语作文(精选6篇)
  5. html5 ie10支持,ie10支不支持html5|Internet Explorer10完美支持HTML5_好特教程
  6. 护士计算机怎么报名,护士自考本科怎样报名
  7. 为什么php不能用了,为什么php不能做大型系统?
  8. 在Android Studio中将Android工程变为Library使用
  9. Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的企业计划管理系统