举报投诉联系我们 手机版 热门标签 VUE中文网
您的位置:VUE中文网 > java无符号数据类型有哪些 Java 无符号数据类型

java无符号数据类型有哪些 Java 无符号数据类型

2023-03-25 00:17 Java教程

java无符号数据类型有哪些 Java 无符号数据类型

java无符号数据类型有哪些

Java语言中的无符号数据类型是指不能表示负数的数据类型,它们只能表示正数或零。Java语言中的无符号数据类型有:byte、short、int、long、char。

其中,byte 是一个 8 位无符号整数,它的取值范围是 0 到 255 之间;short 是一个 16 位无符号整数,它的取值范围是 0 到 65535 之间;int 是一个 32 位无符号整数,它的取值范围是 0 到 4294967295 之间;long 是一个 64 位无符号整数,它的取值范围是 0 到 18446744073709551615 之间。

// byte 的使用方法
byte b = (byte)0xff; // 赋值 255
System.out.println(b); // 输出 -1

char 类型也是一个 16 位无符号字符,它用来表示 Unicode 的字符集中的字符。char 类型在 Java 语言中也有特殊用途:用来表示单个字节的有序序列。例如 char c = '\u0041' ;这里 \u0041 表示十六进制 41 (十进制 65 )对应的 ASCII 码 A (大写 A )。

Java 无符号数据类型

Java数据类型教程 - Java无符号数据类型


Java不支持无符号数据类型。

byte,short,int和long都是有符号数据类型。

对于有符号数据类型,值范围的一半存储正数,一半用于负数,因为一个位用于存储值的符号。

例如,一个字节需要8位;其范围是-128到127.如果您只在一个字节中存储正数,则其范围将为0到255。

Java在包装器类中有一些静态方法,以支持处理带符号值中的位的操作,就像它们是无符号整数一样。

字节类包含两个静态方法:

int  toUnsignedInt(byte x)
long  toUnsignedLong(byte x)

这些方法将指定的字节参数转换为int和long,就像该字节存储无符号值一样。

如果指定的字节为零或正,则转换的int和long值将相同。

如果参数是负数,则转换的数字将是28 + x。

例如,对于-10的输入,返回的值将是28 +(-10),这是246。

负数以2的补码形式存储。值-10将被存储为11110110.最高有效位1表示它是一个负数。

前7位(1110110)的2的补码将是001010,十进制为10。

如果将实际位11110110视为无符号整数,其值为246(128 + 64 + 32 + 16 + 0 + 4 + 2 + 0)。


例子

以下代码显示了如何将存储在字节中的值作为无符号整数:

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);

  }
}

上面的代码生成以下结果。

例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);
  }
}

上面的代码生成以下结果。

阅读全文
以上是VUE中文网为你收集整理的java无符号数据类型有哪些 Java 无符号数据类型全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 VUE中文网 vue88.com 版权所有 联系我们