Java不支持无符号数据类型。byte,short,int和long都是有符号数据类型。对于有符号数据类型,值范围的一半存储正数,一半用于负数,因为一个位用于存储有符号值的符号。
例如,一个字节需要8位; 其范围是-128``到127。如果只在一个字节中存储正数,则其范围将为0到255。
Java在包装器类中有一些静态方法,以支持处理带符号值中的位的操作,就像它们是无符号整数一样。
Byte 类包含两个静态方法:
int toUnsignedInt(byte x)
long toUnsignedLong(byte x)
Java
这些方法将指定的字节参数转换为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)。
Java中的无符号数据类型处理:Byte和Integer类的转换与运算

最低0.47元/天 解锁文章
559

被折叠的 条评论
为什么被折叠?



