比如 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
个数,就是-
128
到
127
一共
256
。
位运算符详解:https://baike.baidu.com/item/移位运算符/5622348?fromtitle=位移运算符&fromid=15456331&fr=aladdin
二进制十进制转换详解:https://www.cnblogs.com/web-record/p/11132861.html
来源:CSDN
作者:JHZ向日葵
链接:https://blog.csdn.net/qq_30423365/article/details/104040435