java >>>无符号运算 负数具体算法求解
比如:
int bt=-20;
//bt>>2= 1000 0000 0000 0000 0000 0000 0000 0101
System.out.println(">>:"+(bt>>2));
/**
* 无符号右移
* 它使用了“零扩展”:无论正负,都在高位插入0
* 20=10100
* 用补码表示,1000 0000 0000 0000 0000 0000 0001 0100
* >>>2= 0010 0000 0000 0000 0000 0000 0000 0101
*
* 1*2的30次方=1073741824 +-5
* =1073741819
*/
//bt>>>2= 0010 0000 0000 0000 0000 0000 0000 0101
System.out.println(">>>:"+(bt>>>2));
这里的>>>2输出结果为1073741819 那也就是1*2的30次方=1073741824 +-5 的结果,
问题:如果把结果二进制转十进制的话不应该再+-5呀,这个—5是怎么得出来的呢,最高位不是已经补0了吗,那要是还是按-数算,那结果怎么没有负数呢,请高手指点,