您好、欢迎来到现金彩票网!
当前位置:秒速快三 > 数据类型 >

51单片机之C语言-41数据类型

发布时间:2019-05-17 18:05 来源:未知 编辑:admin

  。讲数据之前先简单说说单片机的存储结构。我们知道单片机要运行之前,我们需要给他写指令,指令存放在ROM存储器上。我们再细想一下,既然存放在ROM上,那么我们来想一个问题,比如我的指令中有个数字3要,这个3是怎么存放的?相信这个很容易,单片机中存放的都是二进制,那么首先要转成二进制11B,格式如下:

  这个不就是表示3了吗?也就是说,如果你要放这个数,我把这个数先转成二进制形式(可以直接使用电脑自带的计算机来转换),然后找单片机的存储器要2个格子放进去1或者0就行了。这样理解对不对呢?不对。你向单片机要格子的时候,单片机要么给你8个格子,要么16个,也就是8整数倍。为什么是这样?因为单片机存储器的最小单元是一个字节(8位).也就是说,即便你只想放一个数字1,单片机也会给你8个格子。这里我们可以这样来理解存储器:

  每一行8个单元格,每个单元格能放0或者1.ROM由很多个这样的单元格组成。具体的我们后面再讲。于是这样我们存放3,30,40,120等等就容易了,都是放在同一行的单元格中。这样每一行能存放的大小范围为0-255.也就是说在0-255直接任意大小的数据都很好存储了。像这样的数据我们就叫char型。但是又有了个问题,如果我要存放-3这个负数,怎么办?我们说过这些单元格只能放1或者0,不能放负号进去,怎么办?于是我们想了个办法,就从8个单元格中取一个出来,用0表示正,1表示负。取哪一个单元格,最高位也就是最左边的那个为最高位。假如我现在在最高位放一个1,那么单片机怎么知道这个最高位是1还是表示负数,比如:

  1111_0110这个是多少,246还是-118,怎么区别?看看我们是怎么告诉单片机的,

  好了,问题来了。如何我现在要存放256怎么办?8个单元格肯定不够用了,需要9个单元格,前面说了,要么8个单元格,要么16个单元格,单片机不给你9个单元格,这样我们只好用16个单元格,即使只用了9个单元格,有点浪费. 这16个格子就表示int整型。同样的,正负也是占用最高位的一个格子,unsigned int 表示最高位的单元格是数字,signed int最高单元格表示正负。举个例子:65367

  现在我们知道了8个单元格就是char,16单元格就是int(范围限于本单片机).那么有没有24个单元格呢?没有,只有32个格子,这个是固定的。32格子就是长整型了,用long表示。同样的,可以知道,

  通过以上的分析,我们可以知道,如果要使用的数据只需要占用8个格子,就没有必要占用16个格子,这样可以节省存储空间。

  其中的#表示这是一条预处理命令。凡是以#开头的均为预处理命令。标志符为所定义的宏名。字符串可以是常数,表达式,格式串等。

  它的作用是指定标志符M来代替表达式(y*y+3*y). 在编写源程序时,所有的(y*y+3*y)都可由M代替。

http://starnet-france.com/shujuleixing/19.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有