后端--java中数据类型和位运算符

java是一种强类型语言.这就意味着必须为每一个变量声明一种类型.在java中,一共有8种基本类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型.

整型用于表示没有小数部分点的数值,它允许是负数.java提供了4种整型,具体内容如下表所示:

数据类型 存储需求 最小值 最大值
Byte 1字节 -2^7=-128 2^7-1=127
Short 2字节 -2^15=-32768 2^15-1=32767
Int 4字节 -2^31=-2147483648 2^31=2147483647
Long 8字节 -2^63=-9223372036854775808 2^63-1=9223372036854775807

浮点类型用于表示有小数部分的数值.在java中有两种浮点类型,具体内容图下表所示:

数据类型 存储需求 取值范围
float 4字节 大约±3.40282347E+38F(有效位数为6-7位)
double 8字节 大约±1.79769313486231570E+308(有效位数为15位)

char类型原本用于表示单个字符.不过,现在情况已经有所变化.如今,有些Unicode字符可以用一个char值描述,另外一些Unicode字符则需要两个char值.(Unicode:UTF-16)

boolean(布尔)类型有两个值:false和true,用来判定逻辑条件.整型值和布尔值之间不能进行互相转换.(在c或c++中可以)

在数据类型的最后我们讲解一下在底层浮点类型是怎样存储的:

首先我们要了解的是浮点类型float和double在电脑中的处理是采用IEEE754标准来存储的,具体怎样存储表示如下:

先看一下浮点表示标准形式:SGL = (-1)^SIGN * 1.MANTISSA * 2^(EXPONENT-127)   (可以当成一个公式来记!)

       float变量32位,格式如下:

       s(符号位)      e(阶码)                                f(尾码)

           1      -      11111111      -       11111111111111111111111 

       s:1bit     e:8bit      f:23bit     

       double变量64位,格式如下:  

       s(符号位)        e(阶码)                                            f(尾码)

             1     -     11111111111 -  1111111111111111111111111111111111111111111111111111        

       s:1bit     e:11bit      f:52bit    


 位运算符

处理整型类型时,可以直接对组成整型数值的各个位完成操作.这意味着可以用掩码技术得到整数中的各个位.位运算符包括:

(A位60,B为13)

操作符 描述 例子
如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100
| 如果相对应位都是0,则结果为0,否则为1 (A | B)得到61,即 0011 1101
^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 (〜A)得到-61,即1100 0011
<<  按位左移运算符。左操作数按位左移右操作数指定的位数。 A << 2得到240,即 1111 0000
>>  按位右移运算符。左操作数按位右移右操作数指定的位数。 A >> 2得到15即 1111
>>>  按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 A>>>2得到15即0000 1111

猜你喜欢

转载自blog.csdn.net/weixin_42504145/article/details/82868713
今日推荐