当我们说java中Byte的宽度是8位时,它是什么意思?

Tes*_*lem 2 java primitive-types

我可以存储-127到127之间的数字,但除此之外是不可能的,编译器会发出警告.二进制值127是01111111,130是10000010仍然是相同的大小(8位),我认为我可以存储130字节,但它是不可能的.那是怎么发生的?

icz*_*cza 5

Java没有无符号类型,Java中的每个数字类型都是有符号的(除了char它不是用来表示数字而是用于unicode字符).

我们来看看吧byte.它是一个8位的字节.如果它是无符号的,是的,它的范围是0..255.

但如果它是有符号的,则需要1位信息来存储符号(2个可能的值:+或 - ),这使我们留下7位来存储数字(绝对)值.7位信息的范围是0..127.

请注意,有符号整数的表示在大多数语言中使用2的补码数格式,包括Java.

注意: Java byte类型的范围实际上是-128..127.范围-127..127仅包含255个数字(不是256,这是8位的所有组合的数量).