Java无符号数据类型
来源:互联网 发布:vb施工管理 编辑:程序博客网 时间:2024/05/19 18:37
Java不支持无符号数据类型。byte
,short
,int
和long
都是有符号数据类型。对于有符号数据类型,值范围的一半存储正数,一半用于负数,因为一个位用于存储有符号值的符号。
例如,一个字节需要8
位; 其范围是-128``到127
。如果只在一个字节中存储正数,则其范围将为0
到255
。
Java在包装器类中有一些静态方法,以支持处理带符号值中的位的操作,就像它们是无符号整数一样。
Byte
类包含两个静态方法:
int toUnsignedInt(byte x)long toUnsignedLong(byte x)
这些方法将指定的字节参数转换为int
和long
,就像该字节存储为无符号值一样。如果指定的字节为零或正,则转换的int
和long
值将相同。如果参数是负数,则转换的数字将为2^8 + x
。
例如,对于输入-10
,返回的值将是2^8 +(-10)
,也就是246
。负数以2
的补码形式存储。 值-10
将被存储为11110110
。最高有效位1
表示它是一个负数。
前7位(1110110
)的2
的补码是001010
,十进制为10
。
如果考虑实际位11110110
,在一个字节中作为无符号整数,其值为246(128 + 64 + 32 + 16 + 0 + 4 + 2 + 0)
。
示例-1
以下代码显示了如何将存储在字节中的值作为无符号整数:
public class Main { public static void main(String[] args) { byte b = -10; int x = Byte.toUnsignedInt(b); System.out.println("Signed value in byte = " + b); System.out.println("Unsigned value in byte = " + x); }}
上面的代码生成以下结果。
Signed value in byte = -10Unsigned value in byte = 246
实例-2
Integer
类包含以下静态方法以支持无符号运算和转换:
int compareUnsigned(int x, int y)int divideUnsigned(int dividend, int divisor)int parseUnsignedInt(String s)int parseUnsignedInt(String s, int radix)int remainderUnsigned(int dividend, int divisor)long toUnsignedLong(int x)String toUnsignedString(int i)String toUnsignedString(int i, int radix)
以下代码显示了对两个int
变量的除法运算,如同它们的位表示无符号值一样:
public class Main { public static void main(String[] args) { // Two negative integer values int x = -1; int y = -2;// // Performs signed division System.out.println("Signed x = " + x); System.out.println("Signed y = " + y); System.out.println("Signed x/y = " + (x / y)); // Performs unsigned division by treating x and y holding unsigned values long ux = Integer.toUnsignedLong(x); long uy = Integer.toUnsignedLong(y); int uQuotient = Integer.divideUnsigned(x, y); System.out.println("Unsigned x = " + ux); System.out.println("Unsigned y = " + uy); System.out.println("Unsigned x/y = " + uQuotient); }}
上面的代码生成以下结果。
Signed x = -1Signed y = -2Signed x/y = 0Unsigned x = 4294967295Unsigned y = 4294967294Unsigned x/y = 1
0 0
- Java无符号数据类型
- Java中使用无符号基本数据类型
- java的基本数据类型是无符号的
- Java无符号数
- C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short
- C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short
- C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short
- 在Java中,不存在Unsigned无符号数据类型,但可以轻而易举的完成Unsigned转换。
- 有符号无符号数据类型溢出测试记录
- 基本数据类型--有符号数、无符号数及移位
- 无符号转Java有符号
- java 无符号右移
- java不存在无符号类型
- Java 没有无符号数
- 【c语言】有符号数据类型与无符号数据类型的计算
- Verilog|数据类型中的有符号和无符…
- java无符号和有符号的转换
- java把符号数转成无符号数
- 使用codepush进行ReactNative热部署react-native-code-push
- Java布尔包装类
- Java集合剖析之LinkedHashMap
- 反射用法
- 20个常用的位运算技巧
- Java无符号数据类型
- Android退出应用最优雅的方式
- 反射技术
- URL路径(绝对与相对)
- 软件需求分析初探
- 项目经理的七个习惯
- 批量更新记录
- vue 2.0——模板
- TCP服务端