- 浏览: 1067243 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (501)
- dwr (6)
- javascript (84)
- oracle (66)
- jsp/servlet (18)
- ant (3)
- 基础知识 (12)
- EXT (10)
- My SQL (10)
- java (71)
- spring (37)
- 学习的对象 (2)
- Linux (24)
- 面试 (1)
- HTML/CSS (11)
- tomcat (11)
- 收藏夹 (2)
- Power Designer (2)
- struts.xml配置文件 (1)
- sturts2 (3)
- myeclipse (8)
- eclipse (7)
- Maven (34)
- SVN (3)
- SAP JCO (2)
- JBOSS (11)
- webservice (8)
- word (1)
- 敏捷开发 (1)
- sybase (4)
- Nexus (3)
- EhCache (3)
- log4j (3)
- Cookie (4)
- Session (4)
- CXF (7)
- AXIS (2)
- SSO (1)
- LDAP (1)
- velocity (2)
- Jquery (5)
- redis (2)
- http (4)
- dojo (1)
- Linux资源监控软件mnon的安装与运用 (1)
- notepad++ (1)
- EA (1)
- UML (1)
- JasperReports (1)
- 权限 (0)
- freemarker (4)
- Spring MVC (1)
- JMS (1)
- activeMQ (1)
- hession (3)
- 安全 (1)
- ibatis (2)
- log (1)
- nginx (1)
最新评论
-
winhbb:
我刚好遇到了一个问题(在可以依赖注入的场合有效):有两个模块A ...
解决Maven项目相互依赖/循环依赖/双向依赖的问题 -
nanjiwubing123:
long3ok 写道你好 XmlOutputFormatter ...
用XStream转换复杂XML -
zhoujianboy:
另外一个方法实现eclipse tomcat 热部署:http ...
eclipse下实现maven项目在tomcat容器热部署方法 -
long3ok:
你好 XmlOutputFormatter 请问这个类是在什么 ...
用XStream转换复杂XML -
ganbo:
总结的好,文章给力。
解决Maven项目相互依赖/循环依赖/双向依赖的问题
public static String bytes2HexString(byte[] b) {
String ret = "";
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[ i ] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
ret += hex.toUpperCase();
}
return ret;
}
上面是将byte[]转化十六进制的字符串,注意这里b[ i ] & 0xFF将一个byte和 0xFF进行了与运算,然后使用Integer.toHexString取得了十六进制字符串,可以看出
b[ i ] & 0xFF运算后得出的仍然是个int,那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[ i ]);,将byte强转为int不行吗?答案是不行的.
其原因在于:
1.byte的大小为8bits而int的大小为32bits
2.java的二进制采用的是补码形式
在这里先温习下计算机基础理论
byte是一个字节保存的,有8个位,即8个0、1。
8位的第一个位是符号位,
也就是说0000 0001代表的是数字1
1000 0000代表的就是-1
所以正数最大位0111 1111,也就是数字127
负数最大为1111 1111,也就是数字-128
上面说的是二进制原码,但是在java中采用的是补码的形式,下面介绍下什么是补码
1、反码:
一个数如果是正,则它的反码与原码相同;
一个数如果是负,则符号位为1,其余各位是对原码取反;
2、补码:利用溢出,我们可以将减法变成加法
对于十进制数,从9得到5可用减法:
9-4=5 因为4+6=10,我们可以将6作为4的补数
改写为加法:
9+6=15(去掉高位1,也就是减10)得到5.
对于十六进制数,从c到5可用减法:
c-7=5 因为7+9=16 将9作为7的补数
改写为加法:
c+9=15(去掉高位1,也就是减16)得到5.
在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为(100000000),进位1被丢弃。
⑴一个数为正,则它的原码、反码、补码相同
⑵一个数为负,刚符号位为1,其余各位是对原码取反,然后整个数加1
- 1的原码为 10000001
- 1的反码为 11111110
+ 1
- 1的补码为 11111111
0的原码为 00000000
0的反码为 11111111(正零和负零的反码相同)
+1
0的补码为 100000000(舍掉打头的1,正零和负零的补码相同)
Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,由于int是32位,而byte只有8位这时会进行补位,
例如补码11111111的十进制数为-1转换为int时变为11111111111111111111111111111111好多1啊,呵呵!即0xffffffff但是这个数是不对的,这种补位就会造成误差。
和0xff相与后,高24比特就会被清0了,结果就对了。
----
Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。
而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我们想要的。
【转载地址】http://www.blogjava.net/orangelizq/archive/2008/07/20/216228.html
String ret = "";
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[ i ] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
ret += hex.toUpperCase();
}
return ret;
}
上面是将byte[]转化十六进制的字符串,注意这里b[ i ] & 0xFF将一个byte和 0xFF进行了与运算,然后使用Integer.toHexString取得了十六进制字符串,可以看出
b[ i ] & 0xFF运算后得出的仍然是个int,那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[ i ]);,将byte强转为int不行吗?答案是不行的.
其原因在于:
1.byte的大小为8bits而int的大小为32bits
2.java的二进制采用的是补码形式
在这里先温习下计算机基础理论
byte是一个字节保存的,有8个位,即8个0、1。
8位的第一个位是符号位,
也就是说0000 0001代表的是数字1
1000 0000代表的就是-1
所以正数最大位0111 1111,也就是数字127
负数最大为1111 1111,也就是数字-128
上面说的是二进制原码,但是在java中采用的是补码的形式,下面介绍下什么是补码
1、反码:
一个数如果是正,则它的反码与原码相同;
一个数如果是负,则符号位为1,其余各位是对原码取反;
2、补码:利用溢出,我们可以将减法变成加法
对于十进制数,从9得到5可用减法:
9-4=5 因为4+6=10,我们可以将6作为4的补数
改写为加法:
9+6=15(去掉高位1,也就是减10)得到5.
对于十六进制数,从c到5可用减法:
c-7=5 因为7+9=16 将9作为7的补数
改写为加法:
c+9=15(去掉高位1,也就是减16)得到5.
在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为(100000000),进位1被丢弃。
⑴一个数为正,则它的原码、反码、补码相同
⑵一个数为负,刚符号位为1,其余各位是对原码取反,然后整个数加1
- 1的原码为 10000001
- 1的反码为 11111110
+ 1
- 1的补码为 11111111
0的原码为 00000000
0的反码为 11111111(正零和负零的反码相同)
+1
0的补码为 100000000(舍掉打头的1,正零和负零的补码相同)
Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,由于int是32位,而byte只有8位这时会进行补位,
例如补码11111111的十进制数为-1转换为int时变为11111111111111111111111111111111好多1啊,呵呵!即0xffffffff但是这个数是不对的,这种补位就会造成误差。
和0xff相与后,高24比特就会被清0了,结果就对了。
----
Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。
而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我们想要的。
【转载地址】http://www.blogjava.net/orangelizq/archive/2008/07/20/216228.html
发表评论
-
个人草稿使用
2017-08-19 09:02 0深入理解JVM: http://www.cnblogs.co ... -
Thread.setDaemon详解
2015-04-24 21:31 912java中线程分为两种类型:用户线程和守护线程。通过Threa ... -
怎么使用 ConcurrentHashMap 才能是线程安全的?
2015-04-13 11:54 1510public class test { public ... -
21,tomcat关闭钩子
2014-12-31 10:36 733在很多环境下,在关闭应用程序的时候需要做一些清理工作。问题在于 ... -
Java NIO使用及原理分析 (一) 【转载】
2014-10-24 00:04 492【转载】: http://blog.csdn.net/wuxi ... -
Java 两个集合取交集
2014-10-14 21:16 3141public static Set intersectionS ... -
Calendar类roll和add的区别
2014-10-10 22:28 499import java.text.SimpleDateForm ... -
Gson通过借助TypeToken获取泛型参数的类型的方法
2014-09-30 00:26 633[size=medium]最近在使用Goo ... -
HashMap的遍历效率讨论
2014-09-27 20:41 838经常遇到对HashMap中的key和value值对的遍历操作, ... -
Java 泛型
2014-06-26 12:44 864关键字说明 ? 通配符类型 <? extends T&g ... -
Java泛型集合的理解
2014-06-26 00:05 511[size=medium]什么是泛型? 泛型(Generic ... -
关于java字节码框架ASM的学习
2014-06-19 19:22 894一、什么是ASM ASM是一个java字节码操纵框架, ... -
Java动态代理详解
2014-06-19 17:41 867Java动态代理详解: http: ... -
Java内存,字符串文章收集
2014-06-18 16:24 738java--String常量池问题的几个例子 . http:/ ... -
Java内存解析
2014-06-18 11:48 782栈、堆、常量池等虽同 ... -
Java的堆与非堆内存
2014-01-07 10:59 723堆(Heap)和非堆(Non-heap)内存 按照官方的说法: ... -
JMX 资料收集
2014-01-07 10:53 474JavaSky的专栏 http://blog.csdn.net ... -
JAVA 注解示例 详解
2013-11-12 09:36 829注解(Annotation) 为我们在代码中天界信息提供了 ... -
Java 泛型详解
2013-11-11 22:35 835http://www.360doc.com/content/1 ... -
Java中的Enum的使用与分析
2013-11-09 12:49 825enum枚举类型:在实际问 ...
相关推荐
光伏风电混合并网系统Simulink仿真模型:光伏发电与风力发电的协同控制与并网逆变器设计,光伏风电混合并网系统simulink仿真模型。 系统有光伏发电系统、风力发电系统、负载、逆变器lcl大电网构成。 光伏系统采用扰动观察法实现mppt控制,经过boost电路并入母线; 风机采用最佳叶尖速比实现mppt控制,通过三相电压型pwm变器整流并入母线; 并网逆变器VSR采用基于电网电压定向矢量控制双闭环,经过lcl滤波器并入大电网。 ,核心关键词: 1. 光伏风电混合并网系统 2. Simulink仿真模型 3. 光伏发电系统 4. 风力发电系统 5. 负载 6. 逆变器LCL大电网 7. MPPT控制 8. 扰动观察法 9. Boost电路 10. 最佳叶尖速比 11. 三相电压型PWM变换器 12. VSR电网电压定向矢量控制双闭环 13. LCL滤波器 以上关键词用分号分隔为: 光伏风电混合并网系统;Simulink仿真模型;光伏发电系统;风力发电系统;负载;逆变器LCL大电网;MPPT控制;扰动观察法;Boost电路;最佳叶尖速比
DXP元器件库,初学者有用
2025专业技术人员继续教育公需课题库(附含答案).pptx
C++编写的资产管理系统(带SQLServer数据库文件。)。
Simulink下的MATLAB平台在智能电网微网运行控制中的并网仿真与逆变器控制策略探讨,Simulink:智能电网微网运行控制仿真及其参考资料 关键词:微电网 运行控制 仿真平台:MATLAB 主要内容:并网仿真 逆变器控制 下垂控制 ,关键词:微电网; 运行控制; Simulink仿真; MATLAB; 并网仿真; 逆变器控制; 下垂控制; 智能电网微网。,"Simulink在MATLAB平台下的微电网运行控制仿真研究及资料整合"
Matlab中的HMM隐马尔科夫与Markov马尔科夫时间序列预测源代码及数据集(可运行,适用于单变量预测),HMM隐马尔科夫时间序列预测 Markov马尔科夫时间序列预测(Matlab) 1.所有程序经过验证,保证可以运行 2.程序包括源码(主程序一个,子函数两个)和数据集; 3.程序适用于单变量时间序列预测。 注意:HMMP为主程序、data为数据集,其余m文件为函数文件,运行主文件HMMP即可。 ,HMM隐马尔科夫模型; 时间序列预测; Matlab程序; 验证可用; 主程序; 函数文件; 单变量预测; 包含源码与数据集。,"HMM与马尔科夫模型结合的时间序列预测程序(Matlab)验证版"
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
python学习练习游戏案例,详细备注解释代码,最适合初学者,练手学习,资源已上传欢迎下载学习
三菱FX系列自由口通讯程序详解:FX3U-232BD与上位机通讯及PLC与触摸屏应用,三菱FX自由口通讯程序 三菱FX系列自由口通讯程序 利用FX3U-232BD与上位机自由口通讯, 有PLC程序和触摸屏程序,通过连接三根线即可通讯 具有很好的学习意义和借鉴价值。 ,核心关键词:三菱FX系列; 自由口通讯程序; FX3U-232BD; 上位机; PLC程序; 触摸屏程序; 三线连接; 学习意义; 借鉴价值。,三菱FX系列自由口通讯程序:简易编程与实用连接指南
1990-2022年各省份基尼系数
Python自动化办公源码-60 pandas-matplotlib
MATLAB下的模型预测控制在楼宇负荷需求响应中的研究与应用:结合热力学与舒适度考量,MATLAB代码:基于模型预测控制的楼宇负荷需求响应研究 关键词:楼宇负荷 空调 模型预测控制 需求响应 参考文档:《Model Predictive Control of Thermal Storage for Demand Response》完全复现 仿真平台:MATLAB+CVX平台 主要内容:代码主要做的是一个建筑楼宇的需求响应问题,首先利用楼宇的储热特性,结合热力学方程构建了其储热模型,其次,考虑在动态能量电价的引导下,对楼宇负荷进行需求侧管理,从而能够对其负荷曲线进行改善,在需求响应的过程中也考虑了用户的舒适度,相对来讲比较全面,模型的求解采用的是较为创新的模型预测控制算法,更加创新,而且求解的效果更好,店主已经对代码进行了深入的加工和处理,出图效果非常好,代码质量非常高 ,关键词:楼宇负荷; 空调; 模型预测控制; 需求响应; 储热模型; 动态能量电价; 舒适度; MATLAB代码; CVX平台; 深入处理。,基于MATLAB的模型预测控制研究:楼宇负荷需求响应管理与优化
Prius 2004永磁同步电机设计报告:从理论到实践——磁路法、Maxwell仿真建模与温升分析,Prius2004永磁同步电机设计报告: 磁路法、maxwell有限元法、MotorCAD温仿真、应力分析。 (内容比较完善,用于很需要的朋友,不支持讲解,等额外服务哈。 ) 内容:: 1.Excell设计程序,可以了解这个电机是怎么设计出来的,已知功率转矩等,计算电机的体积,叠厚,匝数等。 2.Maxwell参数化仿真模型:可以学习参数化仿真模型,有限元结果可查看。 3. 橡树岭拆解和实测数据:官方的实测数据和差拆解报告。 4.maxwell prius2004建模仿真教程等:ppt资料一步一步教学怎么去建模 5.温升仿真分析,提供motor cad模型 ,磁路法; Maxwell有限元法; MotorCAD温仿真; 应力分析; Excell设计程序; Maxwell参数化仿真模型; 橡树岭拆解实测数据; Maxwelli Prius 2004建模仿真教程; 温升仿真分析; Motor CAD模型。,2004款Prius永磁同步电机设计报告:Excell程序与Maxwell有限元法融
基于Voronoi理论的维修站点选址算法研究.pdf
料箱输送线程序:PLC设备布局图及电气图纸集成系统(包含MultiControl控制卡等,采用STL开发,仅供学习参考),料箱输送线程序,带目的地跟踪,提供设备布局图和电气图纸以及博途程序。 程序语言较多使用了STL,程序仅供学习参考。 硬件配置:PLC:1515-2 PN HMI:TP700 Confort 主要设备有:英特诺直流辊筒电机,控制卡MultiControl;条码阅读器Sick CLV620; 和MiniLoad堆垛机通过Anybus模块通讯;称重模块品牌碧彩BIZERBA;还有使用丹佛斯变频器的提升机。 ,料箱输送线程序; 目的地跟踪; 设备布局图; 电气图纸; 博途程序; STL语言; PLC硬件配置; 英特诺直流辊筒电机; 控制卡MultiControl; 条码阅读器Sick CLV620; Anybus模块通讯; 称重模块碧彩BIZERBA; 丹佛斯变频器提升机。,"多设备集成:带目的地跟踪的料箱输送线博途程序"
1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/144634074 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理
2025网络安全法竞赛题题库及参考答案.pptx
CAN总线在小电流接地故障检测中的应用.pdf
三菱步进电机驱动器控制定位案例:触摸屏PLC程序实现正反转、原点回归及急停报警功能详解,三菱步进电机驱动器控制的定位案例,带有触摸屏程序,plc程序 程序功能实现正反转控制,原点回归,急停报警等 触摸屏有报警显示,故障历史这些常用的画面设置,对控制多轴运动很有帮助,值得去学习一下 ,核心关键词:三菱步进电机驱动器;定位控制;触摸屏程序;PLC程序;正反转控制;原点回归;急停报警;报警显示;故障历史;多轴运动控制。,"三菱步进电机驱动:触摸屏PLC程序化控制多轴定位系统"
2025最新工业机器人考试题库及答案.doc