java 类型与移位运算

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次得到的结果相同。

你可能感兴趣的:(java,类型,移位)