二进制,十进制,位移运算符

比如 11>>2和-7 >> 2结果分别是多少,今天我根据自己理解讲一下

在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,编译器未做任何优化的情况下,规定实际移动 的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是 移动66次和移动2次得到的结果相同

按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。

11是正整数计算除二取余,然后倒序排列,高位补零  短除法得出1011 

-7是负整数先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一

7转成二进制    00000111    取反  -7转二进制    11111000   加1    11111001     

然而整数型有4个字节长度而一个字节长度是8位,故32位补全 正整数高位补0,负整数补1 如下结果转换用相加法

11(0000 0000 0000 0000 0000 0000 00001011) 把低位的最后两个数字移出0000 0000 0000 0000 0000 0000 0000 0010 结果为十进制2.

-7(1111 1111 1111 1111 1111 1111 11111001)右移两位,因为是负数,所以空位由1补充1111 1111 1111 1111 1111 1111 11111110 转换为十进制是-2

java基本数据类型就8种,记住就好了。除了这些都是引用型的了。   

java四类八种基本数据类型  

第一类:整型 byte short int long  

第二类:浮点型 float double  

第三类:逻辑型 boolean(它只有两个值可取true false)  

第四类:字符型 char     

在栈中可以直接分配内存的数据是基本数据类型。  

引用数据类型:是数据的引用在栈中,但是他的对象在堆中。  

要想学好Java必须知道各种数据的在内存中存储位置。  对内存有了很好的了解,可以有助你分析程序。     

字节: 

类型                        占用存储空间                                             

byte 字节类型               1                                                                                                       

char 字符型                 2  一个字符能存储一个中文汉字(unicode双字节编码)         

short 短整型                2                                              

int 整数类型                4                                                                                                                                    

float 浮点类型(单精度)    4 

long 长整形                 8 

double 双精度类型(双精度) 8     

boolean 布尔型              1/8 (boolean可1个可8个统称)     

java中默认的整数类型是int类型,如果要定义为float型,则要在数值后加上l或L;

 默认的浮点型也是双精度浮点,如果要定义为float型,则要在数值后加上f或F。                              

 一个字节等于8位,一个字节等于256个数,就是-128127一共256。 

位运算符详解:https://baike.baidu.com/item/移位运算符/5622348?fromtitle=位移运算符&fromid=15456331&fr=aladdin

二进制十进制转换详解:https://www.cnblogs.com/web-record/p/11132861.html

猜你喜欢

转载自blog.csdn.net/qq_30423365/article/details/104040435
今日推荐