签名的整数类型的签名存储在哪里((java语言)

unhi4e5o  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(227)

例如,java数据类型byte将-128到127的数据保存在存储器的一个字节中。要在-1到-128之间从0到127进行区分,将需要额外的数据,这将使数据类型覆盖其分配的存储。诚然,它只需要一个额外的位,但它仍然会过去。
java是如何做到这一点的?

wj8zmpe1

wj8zmpe11#

二的补语:
原语类型在所有机器和所有实现中都定义为相同的,并且是各种大小的两位补码整数、单精度和双精度ieee 754标准浮点数、布尔类型和unicode字符字符类型-java语言规范:简介
你可以把它想象成一个从0到255的整数,从中减去128。
更具技术性:整数可以(也将)取反(正)→ 负或反之亦然)通过反转其位并加一。这几乎就像一个人的补码(它简单地将所有的位反转为补码)。但是一的补码有一个问题,它有两个不同的零:+0和−0(浮点数也有,但出于其他原因和更有用的原因)☺). 二的补码通过加一来解决这个问题,从而扩大了负值的范围(这就是为什么它是−128..127).
在某种程度上,你可以说符号确实“存储”在数字的第一位。所以你认为它需要一点存储是正确的。但是一个 byte (正数或负数,忽略符号)只需要7位,所以您又有了一个字节。

相关问题