gpt4 book ai didi

java - 有符号整数类型的签名存储在哪里? ( java 语)

转载 作者:行者123 更新时间:2023-11-29 10:08:02 27 4
gpt4 key购买 nike

例如,Java 数据类型字节将数据从 -128 到 127 存储在单个字节中。为了能够区分 - 1 到 -128 从 0 到 127 将需要额外的数据,这些数据将采用数据类型覆盖其分配的存储空间。不可否认,它只需要额外的 1 位,但它仍然会结束。

java 是怎么做到的?

最佳答案

Two's complement :

The primitive types are defined to be the same on all machines and in all implementations, and are various sizes of two's-complement integers, single- and double-precision IEEE 754 standard floating-point numbers, a boolean type, and a Unicode character char type. —The Java Language Specification: Introduction

您可以将它想象成一个 0 到 255 之间的整数,总是从中减去 128。

更具技术性:一个整数可以(并且将会)通过反转其位并加一来取反(正→负或反之亦然)。这几乎One's complement (它只是简单地反转所有位——因此补码。但是一个补码有一个问题,它有两个不同的零:+0 和 −0( float 也有,但出于其他原因并且更有用 ☺)。补码解决了这是通过加一,从而扩大负值的范围(这就是为什么它是 -128..127)。

以某种方式您可以说符号确实“存储”在数字的第一位中。因此,您认为它需要一点存储空间的观察是正确的。但是一个byte的数值范围(正或负,忽略符号)只需要7位,所以你又是一个字节。

关于java - 有符号整数类型的签名存储在哪里? ( java 语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com