java移位运算 cpu gpu_关于java操作中的移位运算
packagecom.dgjianke.ch03;/*** 关于二进制数据的一些操作
*@authordgjianke
**/
public classBitManipulation {/*** 打印出整型数据在机器中的二进制形式
*@parami 整型数据*/
public static void printIntBinary(inti) {for(int j=31;j>=0;j--) {if(((1 << j) & i)==0) {
System.out.print(0);
}else{
System.out.print(1);
}
}
System.out.println();
}/*** 打印出长整型数据在机器中的二进制形式
*@parami 长整形数据*/
public static void printLongBinary(longi) {for(int j=63;j>=0;j--) {if(((1L << j) & i)==0) { //注意这里为1L,否则不会按64位处理
System.out.print(0);
}else{
System.out.print(1);
}
}
System.out.println();
}public static void printShortBinary(shorti) {for(int j=15;j>=0;j--) {if(((1 << j) & i)==0) {
System.out.print(0);
}else{
System.out.print(1);
}
}
System.out.println();
}public static voidmain(String args[]) {int i = 1;int j = -1;//printIntBinary(i);//结果为:00000000000000000000000000000001//printIntBinary(j);//结果为:11111111111111111111111111111111
long k = 3;long l = -3;
printLongBinary(j);//long转int也是把低32位赋值给int类型//printLongBinary(k);//结果为:0000000000000000000000000000000000000000000000000000000000000001//printLongBinary(l);//结果为:1111111111111111111111111111111111111111111111111111111111111111
short s = -1;
printShortBinary(s);//运算顺序:1. s转成int类型所以二进制为:11111111111111111111111111111111//2. 再对这个int类型s进行移位运算结果:00000000001111111111111111111111
printIntBinary(s>>>10);//运算顺序:1. s转成int类型所以二进制为:11111111111111111111111111111111//2. 再对这个int类型s进行移位运算结果:00000000001111111111111111111111//3. 再将值赋值给s这个short类型,取低十六位进行赋值,结果为:1111111111111111(8个1),即十进制的-1//4. 将值传给printIntBinary时,s再转成int类型,所以二进制为:11111111111111111111111111111111
printIntBinary(s>>>=10);//printIntBinary(~s);
byte b = -1;//printIntBinary(b);
System.out.println(b>>>10); //结果为:4194303
System.out.println(b>>>=10);//结果为:-1(原理和上面相同,只不过由低十六位换成了低八位)
System.out.println(b>>>28);//结果为:15,这里实际打印int类型
System.out.println(b>>>=28);//结果为:15,这里实际打印byte类型,总之高位转低位是按低位来赋值 的
}
}
java移位运算 cpu gpu_关于java操作中的移位运算相关推荐
- java cpu监控,java系统监控CPU 磁盘
java系统监控CPU 磁盘 import java.io.*; /** * linux 下cpu 内存 磁盘 jvm的使用监控 * @author avery_leo * */ public cla ...
- java 监控系统cpu,java系统监控CPU 磁盘
java系统监控CPU 磁盘 import java.io.*; /** * linux 下cpu 内存 磁盘 jvm的使用监控 * @author avery_leo * */ public cla ...
- Java从入门到精通08-二进制、位运算、移位运算
Java从入门到精通08-二进制.位运算.移位运算 二进制(Binary)数用0和1两个数字及其组合来表示任何数.进位规则是"逢2进1",数字1在不同的位上代表不同的值,按从右到左 ...
- 高并发编程-通过volatile重新认识CPU缓存 和 Java内存模型(JMM)
文章目录 概述 volatile定义 CPU缓存 相关CPU术语 CPU缓存一致性协议MESI 带有高速缓存的CPU执行计算的流程 CPU 多级的缓存结构 Java 内存模型 (JMM) 线程通信的两 ...
- idea2020shezhi代码检查级别_结合 CPU 理解一行 Java 代码是怎么执行的
根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器.控制器.存储设备,以及输入输出设备,如下图所示. 我们先来分析 CPU 的工作原理,现代 CPU 芯片中大都集成了,控制单元,运算单 ...
- 生产环境下JAVA进程高CPU占用故障排查
感谢原作者 http://blog.chinaunix.net/uid-10449864-id-3463151.html 问题描述: 生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常 ...
- Java中sin、log、tan等复杂数学运算怎么搞?
MXReflection,一个基于mXparser库功能的Java复杂计算框架. 还记不记得求学时代各种复杂的数学公式?sin.log2.tan等等等,是不是看到这就觉得算起来麻烦? 通过MXRefl ...
- window服务器cpu过高的排查_高频面试题:Java程序占用 CPU 过高怎么排查
这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的. 线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因? 这就是 ...
- 从Java视角理解CPU上下文切换(Context Switch)
在高性能编程时,经常接触到多线程. 起初我们的理解是, 多个线程并行地执行总比单个线程要快, 就像多个人一起干活总比一个人干要快. 然而实际情况是, 多线程之间需要竞争IO设备, 或者竞争锁资源,导致 ...
最新文章
- jax-ws服务使用
- 传输层端口号的范围是多少?被分为哪两部分_Cu2ZnSnS4纳米晶做空穴传输层经配体改性将低温可喷涂碳电极基钙钛矿太阳能电池的性能提高到17.71...
- 网络营销——网络营销专员浅析网站快照更新要点
- python程序多次运行_[Python]在一段Python程序中使用多次事件循环
- 如何使用QuickConnect远程访问Synology NAS
- codesys com库_CoDeSys官方系统库在线下载,替换国内下载服务器教程
- 蓝牙广播错误码3_蓝牙简介—物理层(PHY)
- 下列哪项不属于以太网交换机的特点_钢筋混凝土结构的特点及配筋要求考点,每天几分钟,轻松学二建...
- 收益管理系统(PROS)缘何在中国水土不服?
- 【POI】导出Excel自适应列宽
- ES6模板字符串中使用变量
- 基于QQ空间API和jsonp跨域的QQ空间背景音乐查询
- Android怎么制作圆角矩形,如何在Android UI中绘制圆角矩形?
- TZT3822EN静态信号测试分析系统
- 从程序员到项目经理(六):懂电脑更要懂人脑
- MEDA: Meta-Learning with Data Augmentation for Few-Shot Text Classification
- 利用火绒黑名单功能屏蔽风险ip地址
- 《微型计算机原理与接口技术》复习笔记(三)
- IT项目管理小组分工情况
- php漏洞检测修复,PHPStudy漏洞自查与修复指导