单片机的学习总结(一)

学习单片机有一段时间了,为了加强记忆,在这里总结一下所学的知识。

1、进制

1.1不同进制

10进制(Decimal):0,1,2,3,4,5,6,7,8,9
8进制(Octal):0,1,2,3,4,5,6,7
16进制(Hexadecimal):0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
计算机采用的是二进制,即只能识别0和1,不存在十进制,八进制和十六进制。八进制和十六进制只是为了将二进制表示的更简略。

1.2 进制转换

(1)二进制数转换为十进制数:源数的各位数码乘以各自的权值,再求和
11001101.011B
=1x27+1x6+1x23+1x22 +1x20+1x2-2 +1x2-3
=205.375
(2)十进制数转换为二进制数
整数部分:除以2的基数取余,至商为0,倒排
小数部分:乘以2的基数取整,适可而止,顺排
例如:
205.375D=?B
整数部分
小数部分
所以205.375D=11001101.011B
同理,不同的进制数之间转换道理相同,只要把除和乘的数换成目的数就可以了。

1.3机器数与真值

什么是机器数?机器数顾名思义就是一个数在计算机中的表示形式。
(1)机器数可以只用正数,即无符号数。如:10001001B=137D
(2)机器数也可以将数的最高位作为符号位来表示数的正负。规定:最高位为0时表示正数,最高位为1时表示负数。
此时上面例子中的10001001B=-9D
(3)机器数所能表示的数的范围受机器字长的限制。

1.4 位,字节,字和双字长数

位(Bit):每个数字符号(数码0或1),位长为1
字节(Byte):每连续8个数码,字节长8
字(Word):计算机一次能同时处理的一串连续二进制数码(字长为16位,32位或64位)
双字(Double Word):占两个字长度

1.5 原码,补码,反码

符号数的原码、补码和反码的区别如下。

原码

正数:符号位0,数值部分与真值绝对值同值
负数:符号位1,数值部分与真值绝对值同值

反码

正数:符号位0,数值部分与真值绝对值同值
负数:绝对值按位取反

补码

正数:符号位0,数值部分与真值绝对值同值
负数:绝对值按位取反后加1

8为机器数表示的真值
注意:计算机内,带符号数一般都以补码的形式在机器中存放和运算。

1.6运算

补码加法

[X+Y]=[X]+[Y];
步骤:
(1)将两个数先变成补码;
(2)对两个数进行加法运算,若最高位上有进位则舍弃不要;
(3)判断结果是否溢出;
(4)若结果溢出,则这次运算结果不正确。若没有溢出,对结果再次求补码,得到结果的真值。

溢出

当两个符号数的运算结果超过了给定长度二进制可以表示的范围。
加法可能溢出的情况:
(1)两个正数相加:两个正数补码和的符号位为1
(2)两个负数相加:两个正数补码和的符号位为0

例子1:计算20+(-10)
1)将两个数先变成补码:
[20]=00010100 [-10]补=11110110
2)作补码加法:
00010100 + 11110110 = 00001010
3)正数加负数不可能溢出。现在 结果为正数,直接求真值
(0000010)2 = 54

例子2:计算64+65
1)将两个数先变成补码:
[64]=01000000 [65]=01000001
2)作补码加法:
01000000 + 01000001 = 10000001
3)两个正数相加的结果符号位为1,则加法的和出现了溢出
出现溢出的原因是二进制数的长度不够造成的。若用16位二进制数,可得到正确答案

补码的减法

[X-Y]=[X]-[Y]=[X]+(-[Y])
=[X]+([Y])
注意:求[-Y]的方法:将[Y]求出来然后将[Y]各位连同符号位取反,再在末位加1,如运算过程中符号位产生进位,则自动丢失。

BCD码

对每个十进制数字分别编码 – BCD (Binary Coded Decimal)码
(1)8421码
(2)格雷(Gray)码
(3)余3码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值