本帖最后由 zch11230 于 2011-12-21 18:56 编辑
回复 36# ayumi502
第一次接触64K程序已经是5年前了 一共有好多个 我依稀记得当时有人解释过制作过程 因为接触电脑也不久 所以解释我也没看懂 现在大概理解的是:先正常方式写出作品 体积很大 有两个地方可以压缩 一是和压缩软件的原理一样 比如 1111111111 可以用1*10表示 这样占用的空间就会少一点 解压再还原成1111111111 所以压缩过的文件再压缩就不怎么管用了 甚至压缩出来的文件比源文件还大
另一个就是实时演算 我们平时玩的3D游戏里面的所看到的都是事先做好的 保存在文件里面 3D演示里面你所看到的 听到的 都是实时演算出来的 比如一个txt文档里面有100000个1 我测试的在WIN7下占用了100,000 字节 而这也可以同样用如下表示 这样又省下不小空间 但因为需要实时演算 所以也需要电脑有相当的处理能力
选用汇编是因为汇编的执行效率非常高
For $i = 1 To 100000
FileWrite($file,1)
Next
追加一点点 我把上面我所描述的两个条件极端化了一点 这样好理解一点 用如下测试 大家可以更极端的试一下 注意循环次数 10000000次用了40秒
$file = FileOpen("test.txt", 1)
If $file = -1 Then
MsgBox(0, "错误", "不能打开文件.")
Exit
EndIf
For $i = 1 To 10000000
FileWrite($file,1)
Next
FileClose($file)
得到的txt大小是9.53MB再用RAR压缩一下 就是6.07KB 压缩比例也算是有1600倍了 整段代码占用了176字节(没有计算编译exe之后的体积 减少exe体积就是汇编所干的事) 应该是5W多倍了吧
我说的只是我所理解的原理 实际操作不一定正确 也不会这么简单 就好像复杂的电脑追究到最后只剩下0和1. |