例如,该Java数据类型字节在存储上一个字节保存从-128到127的数据。 为了使之间distingush - 从0到127 1 -128将要求其将采取的数据类型obver其已分配存储额外的数据。诚然,将只需要1个额外位,但它仍然越过。

如何用java做这个?

有帮助吗?

解决方案

二进制补

  

在原始类型被定义为在所有机器,并在所有实施方式中相同,并且是二进制补码整数,单和双精度IEEE 754标准浮点数,布尔值类型各种尺寸,和一个Unicode字符的字符类型。 - Java语言规范:简介

可以把它想象成从0到255的整数。从128 总是减去。

更多的技术:一个整数可以(并且会)通过反转其位和增加一个被否定(正→负或反之亦然)。这是几乎的如的补(其中仅反转所有位,因此补充但有补有,它有两种不同的零问题:+0和-0(浮点数有过,但由于其他原因,更实用的☺)两补解决这个问题。通过添加一个,并由此延长负的值的范围(这就是为什么它的 -128 .. 127)。

在某种程度上的你可以说,符号确实是“储存”在数的第一位。所以,你的观察,它需要存储一个比特是正确的。但一个byte的数值范围(正或负,忽略了符号)只需要7位,所以再次具有一个字节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top