根据docs.oracle.com: -
byte:字节数据类型是8位有符号二进制补码整数。它的最小值为-128,最大值为127(含)。字节数据类型可用于在大型阵列中保存内存,其中节省的内存实际上很重要。它们也可用于代替int,其限制有助于澄清您的代码;变量范围有限的事实可以作为一种文档形式。
字节 - 8位
2 ^ 7 2 ^ 6 2 ^ 5 2 ^ 4 2 ^ 3 2 ^ 2 2 ^ 1 2 ^ 0
128 64 32 16 8 4 2 1)
添加所有这些数字,我们得到总共255个。那么如何计算-128到127的范围。它在某处是硬编码还是在这个范围内有更多的技术性?
任何建议都将不胜感激。
答案 0 :(得分:5)
让我们计算1字节的范围
答案 1 :(得分:4)
它是一个带符号的类型,意思是它仍然具有255的范围(正如你已经正确计算的那样),但它从-128开始。因此,一半范围低于零,1个可能的数字=(零),其余127个高于0。
第一位是标志。 (1 - 减,0 - 加)
答案 2 :(得分:2)
这是因为第一位用于符号,因为数据类型已签名。
请参阅http://en.wikipedia.org/wiki/Signed_number_representations
由于Java中没有unsigned
基元类型(如C或C#),如果需要“溢出”边界,通常会将其强制转换为更大的类型。
答案 3 :(得分:2)
范围计算公式为:-2 ^(n-1)到(2 ^(n-1)-1)
其中n =否。原始数据类型的位数。 例如:
对于int数据类型,n为32,简称数据类型,n为16等。
所以,int范围将是:-2 ^(32-1)到(2 ^(32-1)-1)
使用相同的公式可以计算byte,short,float和double的范围。
答案 4 :(得分:1)
最后一位,即数字8,我们正在写它2 ^ 7是一个符号位,决定负号或正号,因此它是2 ^ 0 + 2 ^ 1 + 2 ^ 2 + 2 ^ 3 + 2 ^ 4 +2 ^ 5 + 2 ^ 6
答案 5 :(得分:1)
用Java计算范围的公式
-2 (n-1)至+2 (n-1) -1
其中n是位数(1字节= 8位)
因此,对于字节类型范围将是:
-2 (8-1)至+2 (8-1) -1
或,-2 (7)至+2 (7) -1
或者,-128到+127
答案 6 :(得分:0)
它是由签名值作为二进制数的标准表示形式产生的。有关完整说明,请参阅http://en.wikipedia.org/wiki/Two%27s_complement。
-Rich
答案 7 :(得分:-1)
位由0和1组成。字节通常由8位组成。因此可以使用下面给出的通用公式计算值,
没有值数据类型可以具有= 2^n(2 power n)
,其中n表示没有位。
所以字节数据的值= 2^8(i.e 1 byte=8 bits)
,这里n=8
字节值= 256
它应该在零的两边共享相等(半值为负值,半值为正值)。因此字节的范围是-128到127.
答案 8 :(得分:-3)
数据类型范围 所以现在我们开始知道我们如何计算整数数据类型的范围。这个逻辑适用于所有整数数据类型。
下面给出了所有数据类型的完整细节,
S.NO数据类型位范围值
1布尔值1 - 真或假(1或0)
2字节8 -128到127. 256(2 ^ 8)
3短16 -32,768至32,767 65,536(2 ^ 16)
4 int 32 -2 ^ 31 to(2 ^ 31)-1 2 ^ 32
5 long 64参见注释2 ^ 64
6 float 32参见NOTE ---
7 double 64参见注释----
8 char 16 0到65,535 65,536(2 ^ 16)