为了账号安全,请及时绑定邮箱和手机立即绑定

问一个比较基础的问题,为什么0x8FFFFFF 等于 128 MB ?

问一个比较基础的问题,为什么0x8FFFFFF 等于 128 MB ?

繁星淼淼 2019-03-28 22:18:23
怎么换算的啊?进制数之间可以转换,为什么两个不同计量单位之间也可以转换啊?代码如下:import java.nio.*;import java.nio.channels.*;import java.io.*;import static net.mindview.util.Print.*;public class LargeMappedFiles {  static int length = 0x8FFFFFF; // 128 MB  public static void main(String[] args) throws Exception {    MappedByteBuffer out =      new RandomAccessFile("test.dat", "rw").getChannel()      .map(FileChannel.MapMode.READ_WRITE, 0, length);    for(int i = 0; i < length; i++)      out.put((byte)'x');    print("Finished writing");    for(int i = length/2; i < length/2 + 6; i++)      printnb((char)out.get(i));  }}
查看完整描述

4 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

转化为二进制。。数0去


查看完整回答
反对 回复 2019-04-17
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

就算0x8FFFFFF的单位是B,换算后是144MB左右啊,0x8000000 B才等于128MB


查看完整回答
反对 回复 2019-04-17
?
森林海

TA贡献2011条经验 获得超2个赞

应该是代码跟注释不同步吧。比如本来是0x8000000,也就是128MB,后来因为某种原因改成0x8FFFFFFF了,但忘了改注释。或者干脆就是笔误。感觉这是一个典型的“无用”注释。


查看完整回答
反对 回复 2019-04-17
  • 4 回答
  • 0 关注
  • 673 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信