最近一段时间,很多同学专门到计算机教研室(文法楼406)来询问进制转换及带符号数的表示方法问题。一对一的讲了好多次,但是肯定还有很多同学,尤其是大四即将参加计算机基础课程清考的同学,对这块内容可能还有疑问,于是,我把进制转换和带符号数的表达方法分别写了两篇文章,以供同学们复习之用。进制转换过程中需要注意的几个问题已于11月24日在教学天地的教学答疑板块刊登,这篇总结一下带符号数的表示方法。
在计算机中,带符号数的符号可以和其数值一样用一位二进制数来表示,通常,我们把一个数的最高位设定为符号位,表示数的正负,正数用“0”表示,负数用“1”表示,其余位来表示数值的大小。这种在计算机内连同符号一起数字化的数据称为机器数,计算机中常用的机器数有原码,反码和补码三种表示。
首先:如何求一个数的原码。
在原码表示法中,第一位是符号位,用“0”表示正数,用“1”表示负数,数值部分以二进制的绝对值表示。总结为一句话就是:符号位加数值位。请看下例:
设机器字长为8位:
(+1) 原= 00000001 (+14) 原= 00001110
(-1) 原= 10000001 (-14) 原= 10001110
其次:如何求一个数的反码。
在反码表示法中,正数的反码与原码相同;负数的反码符号位保持不变,数值位部分按位取反(即,“1”变“0”,“0”变“1”)。这就是为什么叫反码的原因。试看下例:
(+1)反=(+1) 原= 00000001 (+14) 反=(+14) 原= 00001110
(-1) 反= 11111110 (-14) 反= 11110001
最后,如何求一个数的补码。
在补码表示法中,正数的补码与原码和反码相同,也就是说,对正数而言,三码合一。负数的补码在其反码的基础上末位加1。请看下例:
假设机器字长还是8位:
(+1)补=(+1)反=(+1) 原= 00000001
(-1)补= 11111111 (注意和(-1)反=11111110 对比)
(+14) 反=(+14) 原= 00001110
(-14) 反= 11110010 (注意和(-14)反=11110001)
下来看一个完整的例子。求33和-33的原码、反码和补码
解:(33)D=(100001)B
(33)原=(33)反=(33)补=00100001
(-33)原=10100001
(-33)反=11011110
(-33)补=11011111
大学计算机基础课程是大学非计算机专业学生必修的公共基础课程,也是学习其他计算机相关技术及课程的基础。带符号数的表示这一块大家一定要重负数的三种表示形式,它是大学计算机课程中很重要的一个知识点,也是一个常考的点,无论是期末考试、补考还是清考,这一块内容大家都要认真的复习,一定要多动手,多练习,眼过千遍不如手过一遍。 |