计算机溢出问题(1)

  大多数机器对整数使用补码编码,而对浮点数使用IEEE标准754编码。在位级上理解这些编码,且理解其算术运算的数学优缺点,对正确使用编程语言避免漏洞来说,非常重要。

1、整数运算

 (1). 无符号加法

  针对w位无符号数:

  溢出判断:

  (2). 补码加法(有符号加法)

  针对w位补码:

  溢出判断:

 (3). 无符号乘法:
 (4). 补码乘法(有符号乘法):先做无符号乘法,再把无符号数转为补码
 (5). 乘2的幂次

  无符号数与有符号数一致左移位操作,再做截断操作

 (6). 除2的幂次

  无符号数除2的幂次 = 无符号数右移位 + 向下舍入 + 截断操作
  有符号数除2的幂次,如果也按无符号数采取右移位,存在舍入问题。因为被除数为负数时,向下舍入并不合理,例如:-171.25=-172,需向上舍入,例如-171.25 = -171。 采用加偏置进行向上舍入,即x/y向上舍入=(x+y-1)/y向下舍入,即[(x+(1<<k)-1)>>k],再做截断操作。

整数运算小结:

  表示数字的有限字长限制了可能的值的取值范围,运算结果可能溢出。整数运算均满足交换律、结合律、分配律。补码表示提供了一种既能表示正数也能表示负数的方法,同时使用了与执行无符号相同的位级实现,针对算术运算,无论无符号数还是有符号数表示形式,都有完全一样或者相似的位级行为。

2、浮点数运算

 (1). 浮点数表示:S:符号,M:尾数,E:阶码

浮点数编码分为三种类型:(1)、规格化的值;(2)、非规格化的值;(3)、特殊的值;
  (1). 规格化的值
   条件:exp即不全为0,也不全为1时:
   M = 1(隐式默认值) + Frac(51:0)
   E = exp - [(2<<k-1) - 1] k为阶码长度11
   规格化的值的数量为:[(2<<k)-2]*[2<<63-k]

  (2). 非规格化的值
   条件:exp全为0时:
   M = Frac(51:0)
   E = - [(2<<k-1) - 1]
   E != 1-[(2<<k-1)-1] 原因:非规格化的值提供非常接近0.0的浮点数编码,去掉1可以起到从非规格化数值到规格化数值之间的平滑过渡。

  (3). 特殊的值
   条件exp全为1时:
   小数域Frac(51:0)全为0时,V代表无穷大;Frac(51:0)为非0时,V为NaN代表“不是一个数”

 由于有限的位数限制,浮点数数量为[(2<<k)-1]*[2<<63-k],浮点数在数轴上的分布规律越靠近0越密集,反之间隔越大,非规格化数值在表示范围内为均匀分布。(存在精度问题),所以浮点数运算只能近似的表示实数运算,IEEE浮点格式定义了四种不同的舍入方式(向偶数舍入、向零舍入、向下舍入、向上舍入)。

 (2). 浮点运算

   * 浮点运算满足交换律,不满足结合律、分配律。
   * 浮点加法满足单调性,乘法满足条件单调性。
   * 浮点运算缺乏结合律、分配律可能会存在很严重的问题。
   * 将大的浮点数转换成整数是一种很常见的程序错误来源。
   * 当浮点数非常接近0.0,从而转换成零时,也会下溢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容