你的位置: 首页 > 通信技术 > 汇编语言

计算机中数和字符的表示

2016-10-22 10:31:13 | 人围观 | 评论:

    一、带符号二进制数表示

    1、什么是字长?

    计算机数据线一次能传送的最大的二进制数的位数。常用的字长:

    8位、   16位、     32位

    ↓       ↓        ↓

    Z80      IBMPC      80386

    Apple      PC/XT      80486

    PC/AT

    2、无符号二进制数

    在字长范围内,所有二进制位都是数值位。

    字长8位: 0~255           00H~FFH

    字长16位: 0~65535    0000H~FFFFH

    字长32位: 0~4294967295  0000 0000H~FFFF FFFFH

    3、有符号二进制数

    在字长范围内,最高二进制位为符号位,其余位为数值位。

    字长8位:数值范围  80H~7FH    -128~+127

    字长16位:     8000H~7FFFH  -32768~+32767

    字长32位:   8000 0000H~7FFF FFFFH  -2147483648~+2147483647

    二、带符号数的补码表示

    在计算机中,任何一个带符号数,都是以补码的形式进行存贮和管理的。

    1、带符号数的原码表示

    最高位为符号位,其余位是数值位。

    [+121]原= 0111 1011       0000000001111011

    [-121]原= 1111 1001       1000000001111001

    [+0]原= 0000 0000        0000000000000000

    [-0]原= 1000 0000        1000000000000000

    2、补码表示

    (1)正数,同原码

    (2)负数,原码的每一位(符号位除外)取反,再在末位加1

    例:字长8位,求-11的补码

    原码         1000 1011

    各位取反     1111 0100

    末位加1      1111 0101

    例:字长8位,求-0的补码

    原码        1000 0000

    各位取反    1111 1111

    末位加1     0000 0000

    还有一种办法可以写出一个负数的补码:

    令,则[x]补码=,     n是字长的位数

    例:  [-1]补=    = 1111 1111

    [-127]补=  = 1000 0001

    [-64]补=  =  1100 0000

    [-5]补=   =  1111 1011

    [-128]补=  =  1000 0000 

    3、由补码求真值(补码对应的十进制数)

    原码就是数字本身,例如:

    (+7)的原码=0000 0111 最高位为符号位(0表示正数)

    (7)的原码=1000 0111 最高位为符号位(1表示负数)

    反码就是将原码按位求反(符号位不变),例如:

    (+7)的反码=0111 1000 符号位不变

    (7)的反码=1111 1000 符号位不变

    从计算机运算的角度来讲,“符号位不变,将原码求反再加一”的算法是很方便的,但对于读者理解补码的概念没有多大帮助。

    例如:求(7)的补码。

    

    注意:当负数以补码的形式表示时,求该数的原值仍用“求反再加一”的方法,例如,

    

    如果是正数,就不能用上述方法。正数的补码就是该数的本身,所以本书中不引入“正数的补码就是原码”的概念。

    其实补码是针对负数来说的,计算机中只有加法器(没有减法器),引入补码的目的是为了将减法计算变为加法计算。

    有了只有负数才有补码的概念后,我们就可将注意力放在负数上。让我们以时钟来说明补码的概念,见表1-1。

    表  1-1





标签:

相关内容推荐:

   时    间

           逆时针时间

   0(12)

  (12)    (12)的补码 = 12  |12| = 

1

  (11)    (11)的补码 = 12  |11| = 

2

  (10)    (10)的补码 = 12  |10| = 

3

  (09)     (9)的补码 = 12  |09| = 

4

  (08)     (8)的补码 = 12  |08| = 

5

  (07)     (7)的补码 = 12  |07| = 

6

  (06)     (6)的补码 = 12  |06| = 

7

  (05)     (5)的补码 = 12  |05| = 

8

  (04)     (4)的补码 = 12  |04| = 

9

  (03)     (3)的补码 = 12  |03| =

10

  (02)     (2)的补码 = 12  |02| = 

11

  (01)     (1)的补码 = 12  |01| =