比如 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