a=-1<<3;a的值是多少呢?
下面分析一下
-1表示为 1 0000000 00000000 00000000 00000001 //注这是源码;在计算机底层所有数据是以补码存储;转换成反码
1 1111111 11111111 11111111 11111110 // -1的反码,+1变成补码
1 1111111 11111111 11111111 11111111 // -1的补码
发现一个奇怪的现象:-1的补码全为1, 当向右移动的时候,犹豫-1是个负数,右移最1位,最高位补1,所以这样右移下去,得到的始终是没有发生变化, 所以-1右移多少位其结果都是-1。
|
|