科吉思石油论坛

标题: 地震解释员一定要知道的——SEGY格式IBM与IEEE 32位浮点的区别 [打印本页]

作者: admin    时间: 2016-9-26 17:32
标题: 地震解释员一定要知道的——SEGY格式IBM与IEEE 32位浮点的区别
地震解释员一定要知道的——SEGY格式IBM与IEEE 32位浮点的区别
作者:刘义  QQ:188784781
做过解释的朋友都知道,在加载SEGY地震数据时经常会碰到一个选项,”IBM”与”IEEE”,它们有什么区别?选错会有什么影响?本文就对它们做个介绍与比较。
一.           什么是IBM格式与IEEE格式?
IEEE格式即IEEE754标准,它是1985年电气和电子工程师委员会制定的一种浮点记录格式标准。如目前我们经常采用的普通微机即采用此格式记录。
IBM格式——类似IBM等大型机体系结构所用的一种浮点数据格式。
二.           IBM 32位浮点与IEEE 32位浮点有什么差别?
一句话而言,它们差别很大!首先来看看浮点数的格式:
浮点数(Floating point)由三部分组成:符号位(S)、指数位(E)、小数部分(M)。32位浮点数存储见下方示意图(图1):
图1 32位浮点数二进制构成
IBM32与IEEE32它们的区别主要体现在以下两点:
1.32位IEEE由1位符号位、8位指数部分、23位尾数部分组成;32位IBM的指数部分为7位,24位尾数。
2.它们对应十进制数值的计算方式不一样:
IEEE32: result = (-1)^S*(1+M/(2^23)) *2^(E-127)
IBM32:result = (-1)^S*(M/(2^24))*16^(E-64)
另需要注意的是,不同的系统字节序(Endian)存在大、小字节序差别,即便同样的一种格式如IBM32格式,在不同系统中的存储字节顺序可能是不一样的(详注见本文末尾的介绍)。
三.           错用IBM32位浮点与IEEE 32位浮点有什么后果?
再用一句话来说,用错IBM与IEEE,后果很严重。
图2为某IBM32格式SEGY数据正确加载与错误加载为IEEE32格式的变密度显示对比,粗一看,很像哦?虽然它们相对能量看着很像似,其实它们差别很大,首先是数值范围不一样,其次,错误加载时(右)地震轴很不正常。
图2某IBM32地震数据加载正确(左)与错误加载为IEEE32(右)对比
如果放大来看,从变面积来看,正确加载与错误加载差别是很大的,IBM加载为IEEE格式,振幅、频率都发生了改变。特别是频谱,从地震轴上就能看出,发生了错误的改变。
图3某IBM32地震数据加载正确(左)与错误加载为IEEE32 (右)对比
最后强调一点,千万不要在加载数据时,格式错误导致频谱改变后,再玩一把错误的带通滤波,期望把数据处理到正常频带内!

附录:本文涉及的重要名词介绍
字节序(Endian):
字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存放顺序,分为大字节序(BigEndian)、小字节序(LittleEndian)和混合序(MiddleEndian)。SGI/IBM、Dec等不同系统具有不同字节序,它们之间传输数据是需要进行转换的。大、小字节序二者的差别见以下示意图:


作者: 王培717    时间: 2016-9-29 13:57
怎么看不到评论




欢迎光临 科吉思石油论坛 (http://bbs.colchis.cn/) Powered by Discuz! X3.2