关于C有符号数数值溢出

#1 什么是溢出当前计算机采用2补码方式编码数字,虚拟主机,以8位为例,表达的全部数值范围为 -128 — 127。正数符号位为0,负数符号位为1。1000 0000表示 -128,美国空间,快速计算方式是将其当作无符号数 128,然后减去 2^8, 全部过程为 128 – 256 = -128。或者反码后加一,同样为 1000 0000 ,即128,当然是 -128。溢出也就是数值逾越了当前数值表表达范围。例如 138 不在 -128 — 127范围内。

#2 加法运算中的简单补救措施例如 120 + 121,120和121都是正常范围内可以表达的数字,但其和 241 属于溢出。再如 -120 -121,结果同为溢出。第一种情况的处理: 强制类型转换为对应无符号数即可。第二种情况的处理: 先使用neg指令,在输出时在结果前加负号,网站空间,可得正确结果。 neg 等效于先取反再加1

#3 如何判断: 操作数同号 && 操作数与结果不同号

#4 范例与截图

1#include<stdio.h>2typedefsignedcharINT8;34intmain(){5INT8m=120;6INT8n=121;7INT8r=m+n;,(unsignedchar)r);910m=-120;11n=-121;12r=m+n;13_asm{14negr15},(unsignedchar)r);1718getchar();19return0;20}

结果:

241

-241

天才是百分之一的灵感加上百分之九十九的努力

关于C有符号数数值溢出

相关文章:

你感兴趣的文章:

标签云: