RandomAccessFile为什么位移4次就能写入一个Int?

public final void writeInt(int v) throws IOException {
        write((v >>> 24) & 0xFF);
        write((v >>> 16) & 0xFF);
        write((v >>>  8) & 0xFF);
        write((v >>>  0) & 0xFF);
        //written += 4;
    }
    
    问题一:第一次右移动24次还有8位,第二次移动16位,还有16位,不是包括第一次的那8位了吗?没重复吗?
    问题二:这跟序列化有什么关系?
阅读 2.1k
2 个回答
aaaaaaaabbbbbbbbccccccccdddddddd
>>>24
000000000000000000000000aaaaaaaa
&FF
000000000000000000000000aaaaaaaa
aaaaaaaabbbbbbbbccccccccdddddddd
>>> 16
0000000000000000aaaaaaaabbbbbbbb
&FF
000000000000000000000000bbbbbbbb
aaaaaaaabbbbbbbbccccccccdddddddd
>>> 8
00000000aaaaaaaabbbbbbbbcccccccc
&FF
000000000000000000000000cccccccc
aaaaaaaabbbbbbbbccccccccdddddddd
>>>0
aaaaaaaabbbbbbbbccccccccdddddddd
&FF
000000000000000000000000dddddddd

就像第一个答案一样,0xFF屏蔽位将高24位的数据都屏蔽掉了,所以不存在重复

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题