飞思卡尔单片机中的码制与编码
飞思卡尔8位单片机的有符号数与无符号数的区别:飞思卡尔8位单片机主要处理8位二进制数,一般分成有符号数和无符号数两种。有符号的8位二进制数用最高位D7表示数的正或负,0代表正,l代表负,D7称为符号位,D6~D0为数值位,格式如图1—4所示。
上述二进制数的形式又称为机器数,它和机器数真值是不同的。如+76的机器数为%01001 100(最高位为符号位),真值为+%1001 100;一76的机器数为%l l001 100(最高位为1,表示负数),真值为一%l001 100。
机器数是单片机中数的基本形式,为运算方便起见,机器数通常有原码、反码和补码三种形式。在计算机中,所有有符号数都是以补码形式存放的。
1.原码(true form):单片机中数的原码形式就是机器数形式,两者完全相同。它们的最高位为符号位,其余为数值位,符号位为0表示该数是正数,符号位为l表示该数是负数。如X=+%1010,其原码表示为[X]原=%00001 010。】,=一%l010,其原码表示为[y]原=%10001010。8位单片机原码的表示范围是一l27~+1 27。在单片机中,0非常特别,它有+0和一0之分,它也有原码、反码和补码三种表示形式。0在8位单片机中的两种原码形式为[+O]原=%00000000,[一0]陌=%1 0000000。
2.反码(one’s complement):在单片机中,正数的反码和原码相同,负数反码的符号位和负数原码的符号位相同,反码数值位是原码数值位的按位取反。如X=+%1 101 101,y=一%01 1 01 1 0,则有:
[X]原=%01 101 101 [y]原=%10110110
[X]反=%01101101 [Y]反=%11001001
8位单片机反码的表示范围是一1 27~+1 27。
3.补码(tw0’’s complement):正数的补码表示与原码相同,即最高位为符号位,0表示正,其余位为数值位,负数的补码由它的反码且在最后位(最低位)加1而得。例如:X=+109 Y=一54
[X]原=%01101101 [Y]原=%10110110
[x]反=%01101101 [Y]反=%11001001
[X]补=%01101101 [Y]补=%11001010
8位二进制补码表示的数值范围为一128~+1 27。其中[+0]补=[一0]补=%00000000。
通常计算机中的数用补码表示,用补码进行运算的明显优点就是减法可以用补码的加法来运算。另外,“溢出"和进位是两个不同的概念,溢出是指有符号数的运算结果超出了其1一128~+127(对于8位单片机)的表示范围,破坏了符号位。
上一篇:飞思卡尔单片机中逻辑运算
下一篇:飞思卡尔数据类型的图解说明