关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)
程序员文章站
2022-07-11 10:19:06
先看一段推理<*一切都是在8个比特位的前提下,讨论二进制的符号位,溢出等等,才有意义*> +124:0111 1100 -124:1000 0100 +125:0111 1101 -125:1000 0011 +126:0111 1110 -126:1000 0010 +127:0111 1111 ......
先看一段推理<*一切都是在8个比特位的前提下,讨论二进制的符号位,溢出等等,才有意义*>
+124:0111 1100 -124:1000 0100
+125:0111 1101 -125:1000 0011
+126:0111 1110 -126:1000 0010
+127:0111 1111 -127:1000 0001
+128:0 1000 0000 -128:1000 0000
从上述过程对比可以看出:+128是在127的基础上加1得到,但是会造成溢出(java中byte的大小为一个字节),所以byte无法表示128,
而在我们的潜意识的想法里:0在计算机中的表示方法有两种:+0(0000 0000)和-0(1000 0000),而由于1000 0000已经被-128占据,所以0在二进制数中是正数表示(即符号位0),
在java中一个byte的取值总个数:2^8 = 256;256/2 = 128;===>取值范围:-128~-1,0~127,原点作为分割点,两个各128数,
注意几个数的特殊性:
0:0000 0000
-128:1000 0000
-1:1111 1111
+127:0111 1111