机器数的表示
1.机器数:
一个数在机器中用最高位表示数的符号,其它位表示数值的大小的这种二进制表示形式,叫做这个数的机器数。 机器数是带符号的,在计算机中,用一个数的最高位存放符号,正数最高位为0,负数最高位为1。
示例:
设计算机字长为8位, 十进制中的数+3,转换成二进制就是0000 0011。 十进制中的数-3,转换成二进制就是1000 0011。 这里的0000 0011和1000 0011就是机器数。
2. 原码:
原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。 设x的原码记作[x]原,如机器字长为n,则原码定义如下 :
示例: 已知x1=+1010101B, x2=-1011101。 求[x1]原,[x2]原
则 x1=0 1010101 x2=1 1011101
8位二进制原码表示的范围为: -127~+127
16位二进制原码表示数的范围为:-32767~+32767
“0”的原码有两种表示法:+0=00000000 -0=10000000
1.反码的定义 设数x的反码记作[x]反,如机器字长为n,则反码定义如下:
正数的反码与其原码相同。例如,当机器字长n=8时: [+0]反=[+0]原=00000000B [+35]反=[+35]原=00100011B
负数的反码是在原码基础上,符号位不变(仍为1),数值位按位取反。例如,当机器字长n=8时:[+14]反=00001110 [-14]反=(10101110)反= (28-1)-|X| =(11111111)-(00101110) =11010001
8位二进制反码表示数的范围为: -127~+127
16位二进制反码表示数的范围为: -32767~+32767
[+0]反=00000000B,[-0]反=11111111B
取反的含义 二进制中有0和1两种状态,取反就是取与当前状态相反的状态(相当于电子器件的高低电平)。1取反=0;0取反=1。
3.反码的作用 反码通常用作求补码过程中的中间形式。
补码的概念 一个数x的补码记为[x]补,补码可定义为:
从定义可见,正数的补码=原码,即[x]补=[x]原,所以,只有负数求补的问题。
补码来历:计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行,用补数代替原数,可把减法转变为加法。
引用补码的目的:是让符号位直接参加运算,以简化加、减运算的规则。
一个数的补码的求法 (1)根据定义求补码 即负数x的补码等于(2n)加上其真值(或减去其真值的绝对值),例如: x=-1010111B,n=8 [x]补=(28)+(-1010111B) =(28)-1010111B =10101001B 这种方法因要做一次减法,很不方便。
2.一个数的补码的求法 (2)利用原码求补码 一个负数的补码等于其原码除符号位保持不变外,其余各位按位取反,再在最低位加1。
例如: x=-1010111B,[x]原=11010111B, [x]补=10101000B+1=10101001B 值得注意的是:0的补码只有唯一的形式,符号位和数值位均为0。无正负0之分。