为什么double尾数占位53?它不应该是8的倍数吗?

53位bit

原因尾数有个默认位为1. 52位+ 1位就是53了

实验

背景知识

2^52 = 4503599627370496

将第一位设置成6 (小于2^53次方)

double d = 6503599627370496L;
for (int i = 0; i < 100; i++) {
    d++;
    System.out.println((long)d);
}

结果正常+1

将第一位设置成9 (大于2^53次方)

double d = 6503599627370496L;
for (int i = 0; i < 100; i++) {
    d++;
    System.out.println((long)d);
}

结果始终为 9503599627370496
————————————————
参考自:https://blog.csdn.net/oneFaceThick/article/details/123202316