java带符号右移运算符

java带符号右移运算符完全看不懂什么意思啊,新手小白求教各位大神,希望讲解的能够简单易懂

第1图第六行的意思就是,把十进制数7转换为二进制数。再把这个二进制数向右移两位,移空的位补上数,得到一个新的二进制数。再把这个二进制数转为十进制数。赋给变量。追答

第二图代码解析下一行,假设有一个指针指在0000 0111最后的那个一上,指针不动。把这个二进制数看成是一串数,可以流动的一串数字。>>2:让你向右移两位,移后变为##00 0001。

7是正数,##处就补成0,用0去补#,就变成0000 0001,这个数再转换成十进制数就是1。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-25
java中所有的都是二进制表示的,带符号的负数采用补码表示方式,所以往右移动那么高位空出的位置补1追问

还是不懂啊,能结合这个代码,运行结果,代码解析跟我讲清楚么

追答

什么地方不懂
带符号数的表示方式:补码方式,负数采用2的补码表示方式
移位运算:例如 10101010 如果往右移动2位 会变成 _ _ 101010 少2位,但是在计算机中byte必须是8位,就是说高位需要补位,那么带符号的就有两种补充方式,如果是负数就补1,正数补0。10101010为负数,所以补充之后为11101010

相似回答