从单片机基础到程序框架(全集 2019pdf版).pdf - 第60页

第十四节:二进制与字节单位,以及常用三种变量的取值 范围。 【14.1 为什么要二进制?】 为什么要 二进制?我们 日常生活明 明是十进制 的, 为何 数字电子领域 偏要选择二进 制?这是由 数字硬件 电路决定的。 人有十个手指头 , 人可以直接发出十种不 同声音来命 名 0,1,2 ,3...9 这些数字 , 人可以直接用 眼睛识别出十种 不同状态的信 息, 但是数字 底层 基础硬件电路 要直接处理和识 别十种状态 却很难, 相对 来…

100%1 / 836
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:5
十六进制:5
二进制:101
2 个数
十进制:1
十六进制:1
二进制:1
分析:
实验结果显示,两变量的数值交换成功。
【13.3 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改C 语言学习区域”代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口的 51 学习板,通过电脑端的串口助手软件就可以
察到不同的变量数值,详细方法请看第十一节内容。
第十四节:二进制与字节单位,以及常用三种变量的取值范围。
【14.1 为什么要二进制?】
为什么要二进制?我们日常生活明明是十进制的,为何数字电子领域偏要选择二进制?这是由数字硬件
电路决定的。人有十个手指头人可以直接发出十种不同声音来命 0,1,2,3...9 这些数字人可以直接用
眼睛识别出十种不同状态的信息,但是数字底层基础硬件电路要直接处理和识别十种状态却很难,相对来说,
处理和识别两种状态就轻松多了,所以选择二进制。比如,一 LED 灯的亮或灭,一 IO 口的输出高电平
或低电平,识别某一个点的电压是高电平或低电平,只需要三极管等基础元器件就可把硬件处理电路搭建起
来,二进制广泛应用在数字电路的存储,通讯和运算等领域,想学好单片机就必须掌握它。
【14.2 二进制如何表示成千上万的大数值?】
二进制如何表示成千上万的数值?现在 LED 灯的亮和灭来跟大家讲解。
(1)1 LED 灯:
0 种状态
1 种状态
合计:共 2 种状态。
(2)2 LED 灯挨着:
灭灭 0 种状态
灭亮 1 种状态
亮灭 2 种状态
亮亮 3 种状态
合计:共 4 种状态。
(3)3 LED 灯挨着:
灭灭灭 0 种状态
灭灭亮 1 种状态
灭亮灭 2 种状态
灭亮亮 3 种状态
亮灭灭 4 种状态
亮灭亮 5 种状态
亮亮灭 6 种状态
亮亮亮 7 种状态
合计:共 8 种状态。
(4)8 LED 灯挨着:
灭灭灭灭灭灭灭灭 0 种状态
灭灭灭灭灭灭灭亮 1 种状态
...... N 种状态
亮亮亮亮亮亮亮灭 254 种状态
亮亮亮亮亮亮亮亮 255 种状态
合计:共 256 种状态。
(5)16 LED 灯挨着:
灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭 0 种状
灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭亮 1 种状
...... N 种状态
亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮灭 65534 种状态
亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮 65535 种状态
合计:共 65536 种状态。
(6)32 LED 灯挨着:
灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭 0 种状
灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭灭亮 1 种状
...... N 种状态
亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮灭 4294967294 种状
亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮 4294967295 种状
合计:共 4294967296 种状态。
结论:
连续挨着的 LED 灯越多,能表达的数值范围就越大。
【14.3 什么是位?】
什么是位?以上一个 LED 灯就代表 1 位,8 LED 灯就代表 8 位。位的英文名是用 bit 来表示。一个变
量的位数越大就意味着这个变量的取值范围越大。一个单片机的位数越大,就说明这个单片机一次处理的数
据范围就越大,意味着运算和处理速度就越快。我们日常所说的 8 位单片机32 位单片机,就是这个位的概
念。为什么 32 位的单片机比 8 单片机的处理和运算能力强,就是这个原因。
【14.4 什么是字节?】
什么是字节?字节是计算机很重要的一个基本单位,一个字节有 8 位。8 LED 灯挨着能代表多少种状
态,就意味着一个字节的数据范围有多大从上面举的例子中,我们知道 8 LED 灯挨着,能表示从 0 255
种状态,所以一个字节的取值范围就是 0 255。
【14.5 三种常用变量的取值范围是什么?】
前面章节曾提到三种常用的变量:unsigned char,unsigned int ,unsigned long。现在有了二进制和
字节的基础知识,就可以跟大家讲讲这三种变量的取值范围,而且很重要,这是我们写单片机程序必备的概
念。
unsigned char 的变量占 1 个字节 RAM,共 8 位,根据前 LED 灯的例子,取值范围是从 0 255。
unsigned int 的变量占用 2 个字 RAM,共 16 位,根据前 LED 灯的例子,取值范围是从 0 65535。
多说一句,对于 51 内核的单片机,unsigned int 的变量是占用 2 个字节。如果是在 32 位的 stm32 单片机,
unsigned int 变量是占 4 个字节的,所以不同的单片机不同的编译器是会有一些差异的。
unsigned long 的变量占用 4 个字节 RAM, 32 位,根据前面 LED 灯的例子,取值范围是从 0 4294967295。