新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机机器数及编码

单片机机器数及编码

作者:时间:2011-09-23来源:网络收藏
及其

1、与真值
机器只认识二进制数:0、1。
这是因为,电路状态常有两个,如通、断;高电平、低电平;…可用0、1表示。
这种0、1、0、1…1在机器中的表现形式——。一般为8位。

2、机器数的及运算

对带符号数而言,有原码、反码、补码之分,计算机内一般使用补码。

1)原码
将数“数码化”,原数前“+”用0表示,原数前“-”用1表示,数值部分为该数本身,这样的机器数叫原码。
设X——原数;则[X]原=X(X0)
[X]原=2n-1–X(X0),n为字长的位数。
如,[+3]原=00000011B
[-3]原=27-(-3)=10000011B
0有两种表示方法:00000000+0
10000000-0
原码最大、最小的表示:+127、-128

2)反码
规定正数的反码等于原码;负数的反码是将原码的数值位各位取反。
[X]反=X(X0)
[X]反=(2n–1)+X(X0)
如,[+4]反=[+4]原=00000100B
[-4]反=(28–1)+(-5)=11111111-00000101=11111010B
反码范围:-128~+127
两个0;+0——00000000B
-0——11111111B
3)补码
补码的概念:现在是下午3点,手表停在12点,可正拨3点,也可倒拨9点。即是说-9的操作可用+3来实现,在12点里:3、-9互为补码。
运用补码可使减法 变成加法。
规定:正数的补码等于原码。
负数的补码求法:1)反码+1
公 式:[X]补=2n+X(X0)
如,设X=-0101110B,则[X]原=10101110B
则[X]补=[X]反+1=11010001+00000001=11010010B
如,[+6]补=[+6]原=00000110B
[-6]补=28+(-6)=10000000–00000110=11111010B
8位补码的范围–128~+127。
0的个数:只一个,即00000000
而10000000B是-128的补码。
原码、反码、补码对照表:表1-2P10

4)补码的运算
当X≥0时,[X]补=[X]反=[X]原
[[X]补]补=[X]原
[X]补+[Y]补=[X+Y]补
[X-Y]补=[X+(-Y)]补
例:已知X=52Y=38求X-Y

计算机在做算术运算时,必需检查溢出,以防止发生错误

5)运算的溢出问题

资 料字长(位数)有一定限制,所以资料的表示应有一个范围。
如字长8位时;补码范围-128~+127
若运算结果超出这个范围,便溢出。
例:

错:两个负数相加和为正数。
可见:结果正确 (无溢出)时,Cs+1=Cs
结果错误(溢出)时,Cs+1≠Cs
溢出判断:溢出=Cs+1Cs(即结果是0为无溢出;1为有溢出)

十进制数的
对机器:二进制数方便,
对人:二进制数不直观,习惯于十进制数。
在编程过程中,有 时需要采用十进制运算,但机器不认识十进制数。
怎么办?
可以将十进制的字符用二进制数进行编码:

这叫做二进制数对十进制编码——BCD码。
上述每4位二进制数表示一个十进制字符,这4位中各位的权依次是:
8、4、2、1——8421BCD码。
BCD码的运算:

(1)BCD码加法规则
两个BCD数相加时,“某位”的和小于10则保持不变;
两个BCD数相加时,“某位”的和大于9,则和数应加6修正。
(2)BCD码减法规则
两个BCD数相减时,“某位”的差未发生借位,则差数保持不变;
两个BCD数相减时,“某位”发生了借位,其差应减6修正。
这里“某位”指BCD数中的“个位”、“十位”、“百位”、……

单片机相关文章:单片机教程


单片机相关文章:单片机视频教程


单片机相关文章:单片机工作原理




关键词: 单片机 机器数 编码

评论


相关推荐

技术专区

关闭