java基础 byte类型的变量值为8就会出问题

人往往不是走的慢才落后,而是走的太快忘记思考了


概念

byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。


既然是二进制为什么还有3,4,5数字呢?

1byte=8bites  ,3用8位的二进制表示是 (0000 0011);


既然是8位最高位代表符号,那么应该最大数值是64啊,怎么是127呢?

byte里面存储的是补码的数字,正数的补码与原码一样;

比如5 的原码是0000 0101;补码一样的0000 0101 补码是8位一起计算的,为5,所以存储的就是5;

原码取反+1=补码;补码-1然后取反就是原码;

比如-5,原码是1000 0101,计算机存储的是反码1111 1011;

最大的正数值的原码与补码一样,127;


为什么最小的值是-128不是-255呢?

按理说是

最小的是1111 1111 (-127),但是把0也划分为负数了;

在加一个,就是

 1  0000 0000 ,9位右溢出一位,就成了1000 000;(自认为0就是-128)


 byte类型必须是数字么?

是!

byte类型的值的范围?

-128---+127

 

你可能感兴趣的:(java编程专栏)