1、无符号数:其最高位的1或0,和其它位一样,用来表示该数的大小。
一个字节(1111 1111) 1111 1111=12^7+12^6+12^5+12^4+12^3+12^2+12^1+12^0=255;所以无符号的一个字节表示的数据范围是0~255 共 256个;
例如:100 无符号表示:0110 0100
2、有符号数:最高数称为“符号位”。为1时,表示该数为负值,为0时表示为正值。
一个字节(0111 1111) 最高位的0表示正号,0111 1111=+111 1111=+(12^6+12^5+12^4+12^3+12^2+12^1+1*2^0)=+127
一个字节(1111 1111) 最高位的1表示负号,1111 1111 =-111 1111 =-127 所以有符号的一个字节表示的数据范围是-127 到 +127 共 255个;
例如:100 有符号表示:0110 0100 //最高位0 表示 +号, 后七位才是具体数据位
例如:-100 有符号表示: 1110 0100 //最高位1 表示 -号, 后七位才是具体数据位
二、java中的基础数据类型
JAVA中没有提供无符号的基本数据类型
在 java 中byte 的范围是 -128 到127
1、为什么有符号数的一个字节最小值是-128
计算机存储数据是按照补码的形式,
有符号数的一个字节最大:0111 1111 =127;正数的补码等于原码 ;
有符号数的一个字节最小:1000 0000 ;反码= 1111 1111 ;补码=反码+1= -111 1111+1 =-0 ;由此可见 -0与0重复;计算机规定 -128等于-0;