1.boolean 1bit 只能取值true or false
byte 1byte
char 2byte 专为unicode设计,包括全球几乎所有语言的字符,中文字符在64000左右
short 2byte
int 4byte Integer.toBinaryString(toHexString) Inteter.parseInt(String)
long 8byte Long 也类似 Long.parseLong(String)
float 4byte
double 8byte
2.java 均为有符号整数,没有无符号整数表示
3.在计算机中,负数以其正值的补码形式表达
举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
先取1的原码:00000000 00000000 00000000 00000001
得反码: 11111111 11111111 11111111 11111110
得补码: 11111111 11111111 11111111 11111111
注意:((long)13<<40)+(3<<30)计算的结果
4.java中有三种移位运算符
<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>> : 无符号右移,忽略符号位,空位都以0补齐
在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。