Magic Number

在linux书中解释的磁盘的第一扇区(512Byte)之中
其中包含64Byte的分区表(用于记录和描述你所谓的分区)
还有446Byte的主引导记录(MBR)用来记录你所要指向的开始的操作系统
64+446=510Byte那么还有2Byte是什么呢?
这两字节其实是magic number(魔数),占2个字节,固定为55AA;
很多人会经常看到魔数这个词但是不知道它到底指的是什么?
今天我们来解读一下关于魔数
魔数有两种定义:
1.很多类型的文件,其中有几个字节的内容是固定的(或是有意填充,或是本就如此)。根据这几个字节的内容就可以确定文件类型,因此这几个字节的内容被称为魔数 (magic number)

根据上面的定义很容易能理解了,这个就是一种固定的字节表示;表示它就是第一扇区这样的一种物质,如果它一旦错了那么系统将不能够启动了。因为系统便会觉得它不是这样一种启动的类型了;

Magic Number_第1张图片
MBR结构

因此,MBR包含三个部分:
1.第1-446字节:调用操作系统的机器码。
2.第447-510字节:分区表(Partition table)。
3.第511-512字节:主引导记录签名(0x55和0xAA)。

那么好端端的为什么要存在魔数这样的概念呢?
如果这512个字节的最后两个字节(Magic Number)是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给"启动顺序"中的下一个设备

它其实就是一种标示签名;
计算机本质并不具有语义识别的,它再怎么智能也是一种仿真式的机械学习和工作所以它不能和人一样去识别,它要的东西一眼就看出来,计算机里面储存的数据其实大家都一样,本质都是0和1;加了起始和终止之后或者规定相应长度才可以将每个不一样部分的数据区分开来,分别读写处理;这样仅仅是区分开了不同的数据部分;但怎么样才能找到它所要的文件或者说叫它想要数据类型呢?比如:就上面这个例子,计算机里面数据大家都一样,那么怎么知道和识别它是一个用于引导启动的引导区域呢?这就要人为的抽象加上特定的数据类型标志符号;才能识别对应的是怎么样的类型;比如加入识别到的第一扇区的第511和512Byte不是0x55和0xAA怎么办?那么就表示该区域不是计算机启动想要的数据类型,那么就将处理交给下一个块;再次识别是否为该种类型的;
所以目前的计算机还是一种机械式的、根据人的抽象来完成的;现阶段的人工智能虽然能够说打败世界象棋好手象棋大师,并不意味着他们就有了自主思考创造的能力了,而是将象棋的所有可能结果进行了输入与学习,历史上相似的局面下,某种走法最终失败了,那么它就规避掉,走胜率高的那种方式,所以啊机器并不会出现这样的情况:啊!这局不妙我可能要输不能给机器一族丢脸啊!赶紧假装肚子饿去充个电然后自杀来逃避;所以说机器还是某种意义上中规中矩的进行着人类给的算法和处理流程,只不过机器能做到人所不能的超长记忆和快速搜索还能无限次的重复等机械行为~终结者里面的机器人叛变就目前情况下是不会出现的,就算有一天机器通过了图灵测试(一种鉴定机器是否够智能能取代人的一种鉴定)也仅仅是淘汰了一部分人的工作而不是淘汰了人这个群体!!!注意是淘汰人的工作,而不是淘汰人!
莫要杞人忧天,还是想想怎么让自己更强靠谱点!!

第二种,编程的人应该懂得,就是你写的代码你放置一年之后再来看,你看不懂的那部分参数变量都能称之为魔数;其实就是引导大家,写代码的规范,当然你如过本身就是怕人盗取,那么你尽量用吧~弄得连自己都看不懂是最好了!

你可能感兴趣的:(Magic Number)