说byte占一个字节没错,但是一般人都只知其一不知其二,1byte等于8bit(位)如果这8位都用于表示整数那能表示0-255的任意数,但是byte类型即可以表示正整数也可以表示负整数,所以第1位是符号位(用于表示正数还是负数)剩下7位用于表示整数,因此只能表示-128-127,255是一个字面量(就是直接写的一个整数)默认类型是int,现在要将一个int类型(4个字节,也就是32位)强制转换为byte类型(1个字节,也就是8位)肯定要丢失一些精度,因为int大,byte小,只能将int数的后8位保留下来,赋值给byte类型的变量
255的二进制是00000000000000000000000011111111,截取成byte类型只保留后
8位,也就是11111111,第1位是符号位0代表正数、1代表负数,这里第一位是1也就是负数,计算机存储的负数是补码,必须将其他位取反(变成全零)再加1,取反加1后这个数为-00000001,这个二进制数转换为整数是-1。所以结果为-1 |