Java中使用无符号基本数据类型
来源:互联网 发布:手机ppt制作软件 编辑:程序博客网 时间:2024/05/07 08:05
Java中使用无符号基本数据类型
我们都知道Java的整形数据类型都是有符号的,并没有提供无符号数据类型。但是可以通过特殊的方法,可以让我们使用无符号数据类型。
比如byte类型范围是-128 - 127,如果存在无符号byte类型,那么范围应该是0-255,为了保存更大的范围的数,我们可以使用比byte类型范围大的数据类型保存byte值。然后只保留最后8位并将其他位置的2进制置0(& 0xff)就可以了。
如下所示
byte byteNum = (byte)255; // byteNum == -1;int intNum = (int)byteNum; // intNum == -1;int UnByteNum = intNum & 0xff; // UnByteNum = 255;
第一行代码:
255(int)-> 1111 1111
1111 1111 最高位是1,所以值为负。具体的值为补码值
1111 1111 按位取反 0000 0000
0000 0000 + 1 -> 0000 0001 表示1
所以,byteNum = -1;
第二行代码:
byteNum为1111 1111
intNum 范围是 -2^31 - 2^31 - 1,所以需要补位。
强制类型转换中,若被转换的数最高位为1,则补1,否则补0。
intNum: 1111 1111 1111 1111 1111 1111 1111 1111
同理求补码,值为-1
第三行代码:
通过位运算,保留最后8位,其他位置0。
更简洁的写法:
byte byteNum = (byte)255;int unByteNum = byteNum & 0xff;
0xff是整型,byte类型与int做运算会发生自动类型转换,精度低的自动转换为精度高的。
所以实质上与上面的代码一样。
除此之外,如果一个保存了byte值得整形变量与其他非byte值得变量做运算后,不要忘了”& 0xff”。
0 0
- Java中使用无符号基本数据类型
- Java无符号数据类型
- java的基本数据类型是无符号的
- 基本数据类型--有符号数、无符号数及移位
- 在Java中,不存在Unsigned无符号数据类型,但可以轻而易举的完成Unsigned转换。
- JAVA中基本数据类型
- Java中基本数据类型
- java中基本数据类型
- java中无符号类型处理
- java中无符号类型处理
- java中无符号类型处理
- java中无符号类型的解决方案
- java中无符号类型处理
- java中无符号类型的处理
- java中无符号类型的处理
- java中无符号类型的解决方案
- 单片机中无符号和有符号变量使用
- c语言中有符号和无符号数据类型的区别
- JS魔法堂:从void 0 === undefined说起
- ORACLE中的层次结构查询
- 希尔排序
- Linux主机间同步时间
- Unity之iTween插件初探Move移动
- Java中使用无符号基本数据类型
- 声明对象和实例化对象的区别
- Asp.net2.0水晶报表(CrystalReports)事例源码大全(C#)VS2005版本
- 获取本机时间
- Apache Mesos:数据中心就是计算机
- C语言extern和static
- iOS开发,系统自带表情的获取
- 从”JAVA“而终 10:javaAPI(二)Math、System类
- c++ 线程池