当前位置: > 财经>正文

编程中的「魔数」(magic number)是什么意思?平时我们能接触到哪些魔数? 外汇交易保险模式是什么意思啊知乎文章

2023-08-14 18:47:08 互联网 未知 财经

“魔数”有贬义词、中性词、褒义词三种用法,默认为贬义词。

1、贬义词“魔数”

指的是代码中出现的没有说明的数字。代码中突然出现一个没说明用途的数字会让其它阅读代码、维护代码的的人非常难受。例如:

const int N = 2073600;for (int i=0; i> 1 );

配合前后的代码,这句代码可以快速计算一个数字的平方根的倒数。具体推导过程比较复杂,涉及到浮点数的原理。

这个靓丽的骚操作给了其它人非常大的震撼,是那个年代的大神级编程技术的缩影,所以被人们怀着敬仰之情称之为“魔数”,全称为“如魔法一样神奇的数字”。

3、中性词“魔数”

某些具有特定格式的文件,喜欢在文件开头写几个特殊的字符以表明自己的身份,以便验明正身。例如常见的几种图片格式的文件:

JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 Windows Bitmap (bmp),文件头:424D

如果你用16进制编辑器打开一个文件,它的开头不是FFD8FF,那就不是jpg文件。这个魔数一般会在相关文件标准中进行规定,所有人都要遵守。

其它答主也列举了多种“魔数”,我再补充一个常用的魔数——Unicode的BOM魔数。由于它在Windows记事本中也会出现,所以我们会经常接触到它,虽然没有感觉。

打开一个记事本,随便输入一些内容,然后另存为。另存的时候可以选择编码

如果保存为Unicode,文件开头就会出现FF FE。如果保存为Unicode big endian,文件开头就会出现FE FF。如果保存为UTF-8,文件开头会出现EB BB BF。

这些数字不仅能代表它是什么编码,还能指定读取编码的顺序。细节就不谈了。

说这个例子是因为Windows记事本曾经出现过一个非常神奇的bug——你无法以ANSI编码保存一个内容为“联通”的文

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。