C计算机基础知识讲诉.ppt
文本预览下载声明
特别注意: 上述二进制的原补码运算都是基于单字节的8位数运算。 如果C语言中2或4个字节的数一起运算时,怎么办? int a=-5; char b=-5;它们的原补码怎样表示? int c=a+b;(涉及到数据类型转化,字节位数要按最高字节数量补齐) [a]原=00000101] [b]原= 不对! [b]原=00000101] 正确 * 2009年10月28日第二次课结束 1.2.4 机器数的原码、反码与补码 计算机中带符号数有三种表示方法:原码、反码和补码。 在这三种机器数的表示形式中,符号位的规定相同,仅是数值部分的表示形式不同。 1、 原码 正数的符号位用“0”表示,负数的符号位用“1”表示,其余数字位表示数值本身。 例如,x1=+1101101 [x1]原 x2=-1101101 [x2]原1.2 二进制数在计算机中的应用 对于数0,可以认为它是+0,也可以认为它是-0。因此,0在原码表示中有下列两种形式: [+0]原=0000 0000 [-0]原由此可见,数0的原码表示不是唯一的。对于8位二进制数(称为一个字节)来说,原码可表示的数的范围是-127~+127。 1.2 二进制数在计算机中的应用 2、反码 正数的反码和正数的原码相同。 负数的反码其符号位为1,其余各位逐位取反,即0变为1,1变为0。 例如, x1=+1101101 [ x1]原 [x1]反 x2=-1101101 [x2]原[x2]反1.2 二进制数在计算机中的应用 当x=±0时,[x]反也有两种表示形式即: [+0000000]反 [-0000000]反所以,在反码表示中.“0”的表示也不是唯一的。8位二进制数反码所能表示的数的范围是-127~+127。 1.2 二进制数在计算机中的应用 3、补码 在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。 正数的补码与正数的原码相同, 负数的补码等于负数的反码加1。 (即符号位不变,数值位取反,后整体在+1) 如何求补码的原码 :即再对补码求一次补码就还原成原码。 例如: x1=+1101101 [x1]原 [x1]反= [x1]补= x2=-1101101 [x2]原 [x2]反= [x2]补= 1.2 二进制数在计算机中的应用 采用补码表示,可以把减法运算变成加法运算。但要注意,在求和的计算中,需要将运算结果产生的进位丢掉,才能得到正确的结果,其结果亦为补码表示。 例如, 21-15=21+[-15]补 当数用补码表示时,无论是加法还是减法运算都可采用加法运算,而且数0的表示是唯一的。因此,在微机中普遍用补码来表示带符号的数。 8位二进制数补码所能表示的数的范围是-128 ~+127。 1.2 二进制数在计算机中的应用 1、 正数有原码=反码=补码 2、负数的原码、反码、补码各不相同,但符号位一定为1. 1.2 二进制数在计算机中的应用 1.2 二进制数在计算机中的应用 求-100的补码 +100=64H -100= 补码的概念: X和y的和得到一个最小进位,则称x和y互为补数。该最小进位值称为“模”。 1.2 二进制数在计算机中的应用 十进制中: 9+1=10 (对一位十进制数而言,1和9互补) 9-1=9+(1)补 =9+9=18,丢弃模10之后得到8 十六进制中: [+100]补=64H [-100]补=9CH
显示全部