java 无符号运算_java位运算和无符号运算
计算机在底层使用的是二进制补码进行运算。
计算规则:
正数的原码、反码、补码是其二进制本身。
负数的原码首先计算其二进制数,然后最高位使用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位运算和无符号运算相关推荐
- java取余位运算_java位运算
位移动运算符: < 例如:3 <<2(3为int型) 1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011, 2)把该数字高位(左侧 ...
- java double 位运算_JAVA位运算等运算符总结
JAVA位运算等运算符总结 一.概述 运算符是一种"功能"符号,用以通知 Java 进行相关的运算. Java 语言中常用的运算符可分为如下几种:算术运算符 赋值运算符 比较运算符 ...
- java取余位运算_Java位运算基础知识
在学习Java运算时,补充学习Java位运算. Java位运算 位运算都是针对整数的补码进行位运算. & 按位与运算 先将整数转换为补码 ,然后执行按位与运算,最后将结果返回为十进制,它有如下 ...
- 位运算符Java与详解_java位运算符详解
java位运算符详讲 一.位运算符分类 java中位运算符主要有:按位与&.按位或|.按位非~.按位异或^. 在使用时,需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示.二. ...
- java 串口 中文乱码_Java 实现 POS 打印机无驱串口打印(解决中文乱码)
java串口通信的说明 Java提供了CommunicationAPI(包含于http://www.doczj.com/doc/a82f84d0195f312b3169a53f.htmlm包中)用于通 ...
- java 找不到符号变量_java编程找不到符号
Person.java:7:找不到符号符号:变量age位置:类Persona.age=10;^Person.java:8:找不到符号符号:变量name位置:类Persona.name="小明 ...
- 编写一个java打印心程序_java – ?同时打印心脏符号
很抱歉问一个愚蠢的问题,我们正在尝试将心脏符号从数据库打印到 Java XML文件.但同样的印刷品是"?"不知道我错过了哪里.尝试过char unicode.作为一种练习,我在ma ...
- java怎么无参构造方法_Java中如何在无参构造方法中调用有参构造?
展开全部 一般正常的都是参数多的调用参数少的.有参数的调用无参数的居e68a843231313335323631343130323136353331333365643537多. 当然你要无参调用的参的 ...
- java欧元货币输出符号位置_java – 使用unicode显示欧元符号并将字符更改为大写...
如果问题只是关于欧元标志变得混乱 – 那就是程序 import java.io.*; public class Foo { public static void main (String args[] ...
最新文章
- Dubbo 18 问
- Linux下取代top的进程管理工具 htop
- 在Sharepoint中批量删除大量条目
- android arcgis 绘制圆_ArcGIS For Android 定位绘图工具 [中心点,误差圆]
- 在指定位置上方出现通用jquery悬浮提示框插件全站通用
- AMD CPU真烂!售后服务也很可恶!
- asterisk 互联
- 【读书笔记0103】Beginning linux programming-shell programming
- C语言怎么给程序加上版本号,给自己的程序加上行号
- git push错误解决方案
- 2020五一建模:C题 饲料混合加工问题 题解
- python实时读取串口数据_串口的数据采集、以及数据的实时显示
- HDU 2037 (贪心或记忆化搜索)
- 用 SpriteKit 做一个逃逸游戏 (2)
- SpringMVC整合activiti Modeler
- bcdedit用法详解
- C语言读取wav文件
- 8.22镭速云传上线,这些精彩都安排上了!
- php源码中powerby,小龙源码网 - discuz论坛怎么去掉power by discuz版权
- 《拍拍二手》微信小程序开发经验谈
热门文章
- php分解字符串_php怎么把字符串分解成字符
- 计算机网络二级考试类型,二级计算机考试大纲
- 东华大学java期末_东华大学数据结构期末复习题!.doc
- 计算机网络利弊的作文英语作文,网络的弊端英语作文(精选6篇)
- html5 ie10支持,ie10支不支持html5|Internet Explorer10完美支持HTML5_好特教程
- 护士计算机怎么报名,护士自考本科怎样报名
- 为什么php不能用了,为什么php不能做大型系统?
- 在Android Studio中将Android工程变为Library使用
- Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
- 基于JAVA+SpringMVC+Mybatis+MYSQL的企业计划管理系统