二进制(前缀0b or 0B)第一位符号位为0表示正数或零,如0b0_000_0001表示1,符号位为1表示负数,如0b1_000_0001表示-127;
(注:从Java 7开始,可以在数字之间加_使其更易读,Java编译器会去除这些_)
正数(1 ~ 127):0b0_000_0001 ~ 0b0_111_1111;
(注:127 = 2^7-1 = 2^0 + 2^1 + … +2^5 + 2^6;)
零(0):0b0_000_0000;
负数(-127 ~ -1):0b1_000_0001 ~ 0b1_111_1111;
(注:Java用补码表示负数,如0b1_000_0001,减1得反码0b1_000_0000,除符号位外取反得原码0b1_111_1111,即-127;
再如0b1_111_1111,减1得反码0b1_111_1110,除符号位外取反得原码0b1_000_0001,即-1;)
-128:0b1_000_0000;
(注:0b1_000_0000没有原码和反码,只有补码;)
溢出:128→-1,129→-2。