计算机中魔数magic number的概念

解读编程中的魔数及其应用
本文深入探讨了编程中的魔数概念,包括其定义、使用场景和具体实例,如Linux ELF文件的魔数、John Carmack的速算平方根倒数算法以及Linux file命令的魔数判断机制。
部署运行你感兴趣的模型镜像

1.魔数

      magic number一般是指硬写到代码或文件中的整型常量,数值是编程者自己指定的,其他人不知道数值有什么具体意义。另外,magic number有时也表示初学者不定义常量名直接写数的不良习惯。


2.使用魔数的举例

(1)linux的ELF格式文件的前四个字节分别是依次是0x7f、'E'、'L'、'F'的ASCII码

(2)约翰·卡马克 (John D. Carmack)的著名的“速算平方根倒数”的算法

float Q_rsqrt( float number )
{
        long i;
        float x2, y;
        const float threehalfs = 1.5F;
 
        x2 = number * 0.5F;
        y  = number;
        i  = * ( long * ) &y;                       // evil floating point bit level hacking(对浮点数的邪恶位级hack)
        i  = 0x5f3759df - ( i >> 1 );               // what the fuck?(这他妈的是怎么回事?)
        y  = * ( float * ) &i;
        y  = y * ( threehalfs - ( x2 * y * y ) );   // 1st iteration (第一次牛顿迭代)
//      y  = y * ( threehalfs - ( x2 * y * y ) );   // 2nd iteration, this can be removed(第二次迭代,可以删除)
 
        return y;
}
这段代码用于速算平方根倒数(浮点开放)的近似,在精度损失可以接受的前提下比C库里的标准计算方法((float)(1.0/sqrt(x))要快上近四倍。代码中的0x5f3759df就是一个业界非常有名的Magic Number,人们一般认为它是由卡马克发明引入的,但被本人否认,其真正来源仍然是个谜。

(3)linux中file命令

linux中file命令用来判断一个文件内容的类型,比如是二进制文件、文件文件、shell脚本等等。    file命令判断一个文件的类型,除了从文件系统、编程语言语法格式角度上判断外,还会从一个文件的魔数来判断文件的内容的类型。


您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值