嵌入式系统基础概念(二)常用术语和整数类型转换

一个人想着一个人 提交于 2020-03-01 20:22:05

常用术语

比特(Bit):最小可操作单位

字节(Byte):最小存储单位,

= 8 Bit,如下表,b7称MSB(Most Significant Bit),b0称LSB(Least Significant Bit)

因为b7=1等价于

,而b0=1等价于

                                                                MSB                                             LSB

b7 b6 b5 b4 b3 b2 b1 b0

半字(HALF WORD):二个字节或者16bit,

b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0

字(WORD):四个字节或者32bit

表征范围(Alternatives):可能性总数。

一个比特,最多两种可能,0 或 1。

一个字节,包含8个比特,每个比特两种可能,所以,最多256种可能。

比特数 (最小)字节数 可能数
8 1 256
10 2 1024

(1K)
12 2 4096
16 2 65536
20 3 1,048,576

(1M)
30 4 1,073,741,824

(1G)
n n/8向上取整

精度(Precision):可表示数值的多少。和表征范围息息相关。

分辨率(Resolution):可分辨的最小差异。

举例,测量0-3.3V模拟信号输入,12bit ADC分辨率(3.3-0)/

=0.8mV,精度是12位(4096个数值)。

良好编程习惯

传统C没有明确char, short, int, long 等存储大小,

建议使用 C99 <stdint.h> 整数类型,uint64_t, int64_t, uint32_t, int32_t, uint16_t, int16_t, uint8_t, int8_t,显示表明符号和存储数据位数。

二进制整数转换为十进制整数,需要考虑符号

无符号整数(unsigned):MSB不表示符号(+ -)

举例,

练习1,将无符号

转换成十进制数。

有符号整数(unsigned):MSB表示符号(+ -)

举例,

练习2,将有符号

转换成十进制数。

 

常用规则

1. b0=0整数是偶数,例如

是偶数,b0=1是奇数,例如

是奇数

2. 最后N位为0(bN-1=0...b0=0),该整数可被

整除,例如,

可以为8(

)整除

 

十进制整数转换为二进制整数,需要考虑符号

举例,将十进制整数100转为二进制表示,首先画一个表如下,我们需要判断8次,结果列问号处填入0或1.

数值 二进制基数 判断及操作 结果
100 128   b7=?
  64   b6=?
  32   b5=?
  16   b4=?
  8   b3=?
  4   b2=?
  2   b1=?
  1   b0=?

操作如下,从第一行开始,做判读和操作,并确定改行结果,最终得到100=

数值 二进制基数 判断及操作 结果
100 128 100<128,所以b7=0,100不变填下行 b7=0
100 64 100>=64,所以b6=1,并将100-64结果填下行 b6=1
36 32 36>=32,所以b5=1,并将36-32结果填下行 b5=1
4 16 4<16,所以b4=0,4不变填下行 b4=0
4 8 4<8,所以b3=0,4不变填下行 b3=0
4 4 4>=4,所以b2=1,并将4-4结果填下行 b2=1
0 2 数值为0,后面结果都为0 b1=0
0 1   b0=0

 

将十进制整数-100转为二进制表示,

数值 二进制基数 判断及操作 结果
-100 -128 -100>=-128,所以b7=1,将-100-(-128)填下行 b7=1
28 64 28<64,所以b6=0,28不变填下行 b6=0
28 32 28<32,所以b5=0,28不变填下行 b5=0
28 16 28>=16,所以b4=1,并将28-16结果填下行 b4=1
12 8 12>=8,所以b3=1,并将12-8结果填下行 b3=1
4 4 4>=4,所以b2=1,并将4-4结果填下行 b2=1
0 2 数值为0,后面结果都为0 b1=0
0 1   b0=0

练习3 将56和-56表示成二进制?

练习4 思考156可以用8bit有符号二进制表示吗?

 

答案1

答案2

答案3

56= 

数值 二进制基数 判断及操作 结果
56 128 56<128,所以b7=0,不变填下行 b7=0
56 64 56<64,所以b6=0,不变填下行 b6=0
56 32 56>=32,所以b5=1,并将56-32结果填下行 b5=1
24 16 24>=16,所以b4=1,24-16填下行 b4=1
8 8 8.>=8,所以b3=1,8-8填下行 b3=1
0 4 数值为0,后面结果都为0 b2=0
0 2   b1=0
0 1   b0=0

 

-56= 

数值 二进制基数 判断及操作 结果
-56 -128 -56>=-128,所以b7=1,-56-(-128)填下行 b7=1
72 64 72>=64,所以b6=1,72-64填下行 b6=1
8 32 8<32,所以b5=0,不变 b5=0
8 16 8<16,所以b4=0,不变 b4=0
8 8 8.>=8,所以b3=1,8-8填下行 b3=1
0 4 数值为0,后面结果都为0 b2=0
0 2   b1=0
0 1   b0=0

 

答案4 不可以,因为8bit有符号只能表示范围-128到127,156>127超出范围。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!