网上盛传的整数分区方法:(X-1)x4+1024xX=Y

X 是你要得到的整数分区的数值,单位是 GB,Y 是你分区时应该输入的数字,单位是 MB,这个算法小点分区没啥问题,但大一点的分区就有误差了,所以这个方法是错误的,下面是根据硬盘存储原理总结的算法。

下面是一些基本原理:
  1. 硬盘厂商为了换算方便,是按照千进制来计算硬盘容量的,一块 1TB 的硬盘实际容量是 1,000,000,000,000Bit = 976,562,500KB = 953,674MB = 931GB 左右,分区后实际可用容量会更小;
  2. 操作系统实际计算硬盘容量是按照 1024 进制,由此导致实际可用容量小于标称容量,硬盘容量越大,「损失」的容量也越大;
  3. 电脑当中实际显示的分区大小,既不是按照硬盘厂商的设计也不是操作系统的设计,而是另有误差。原因就是硬盘在分区和格式化之后还会在硬盘上占用一定的空间用来存储磁盘结构和数据位置等信息;
  4. 硬盘分区是按柱面分的,所有分区都是由 0 磁头,0 扇区开始,255 磁头,63 扇区结束,所以分区最小单位是 512bit*255x63 = 8225280bit = 7.84423828125MB。

对于 NTFS 分区,比如分 200G 的大小,理论值是 200 x 1024M = 204800M,实际需要柱面数为 204800M / 7.84424M = 26108.3 取整为 26109;计算实际大小 26109 x 7.84424MB = 204805.2MB 和 26108 x 7.84424MB = 204797.4MB 之间,取 204805MB,这就是实际分区大小。

对于 FAT32 分区,每 1024 字节可用容量会使用 4 字节用于存储磁盘结构和数据存储位置等信息,但分区中第一 GB 可用容量却不占用额外的存储容量,所以分 200G 大小,理论值还是 200 x 1024M = 204800M,需要柱面数为 26109,计算实际大小为 (200 1024) + (261094/1024)=204902MB FAT32整数分区容量。

本文发表于 http://www.cnbeta.com/articles/168339.htm