前言
在计算机中,带符号数默认采用补码表示,因为利用补码进行减法比较方便。
编码概论
计算机系统内部,所有的信息都是二进制编码的,常用大R表示进制,比如R=2代表二进制。
定点与浮点的表示
在日常生活中,有整数与非整数实数之分,区别在于整数的小数点固定在最右边,而非整数实数的小数点位置不固定。在计算机二进制中,把小数点固定的数称为定点数,把小数点位置可浮动的称为浮点数。
定点表示
定点小数: 小数点总是固定在数的最左边;
定点整数: 小数点总是固定在数的最右边。
浮点表示
根据IEE754标准,任何二进制数都可以表示为如下
其中s表示的是数字V的符号;M是一个二进制定点小数,成为数字V的尾数;E是二进制定点整数,成为数V的阶码或者指数;2是基数。
定点数的编码表示
在日常生活中用±符号表示数字的正负,在计算机中,我们只有0和1,因此我们需将符号数字化,一般规定0为正号,1为负号,任何一个浮点数都可以表示为一个定点小数和一个定点整数,因此只需要考虑定点数的编码表示即可。主要有四种定点数编码表示法:
原码表示法
原码表示法中,正数与负数尽在符号位不同,数值部分相同。例如:
【+0】 = 0 0000…
【-0】 = 1 0000…
优点: 表示简单,转换简单,利于实现乘除运算
缺点: 0的表示不唯一,加减法则复杂
因此现代计算机中一般不用原码表示整数,只用定点原码小数来表示浮点数的尾数部分。
补码表示法
正数的补码是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
详见:cnblogs.com/zhangziqiu/archive/2011/03/30/computercode.html
优点: 实现加减法的统一
反码表示法
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变, 其余各位取反,
缺点: 0的表示不唯一,表示范围比补码上一个最小负数,运算时候必须考虑循环进位
移码表示法
详见:cnblogs.com/zhangziqiu/archive/2011/03/30/computercode.html