① 在C51 语言中,字符型数据所占的内存空间是几个字节
字符型数据所占的内存空间是几个字节?
一。
② c51数据类型sfr占多少个字节
数据类型
通俗的讲就是数据的取值范围。不同类型的数据所代表的意义和它所占的存储空间是不同的。比如:bit
代表位变量,它代表寄存器中的一位,P1.0代表的意义知道吧,它也是位变量的一种。无符号整数的取值范围是
0~65535,我们知道一个字节
③ 请问单片机89C51中C语言int和char类型跟占用多少字节谢谢
对于该款单片机,int类型的变量占据2个字节,char类型的占据1个字节。不过一般大家为了节约空间,大部分会使用char类型,同时89C51是一款8位的单片机,所以推荐使用char类型的变量进行运算,即使我们在代码中写入int类型的变量进行运算,也是编译器编译成为了8位的运算模式进行运算的。体现不了硬件的优势。
④ 关于c51存储类型和其数据长度,有点不懂,求指点
你上面的表格,可以说,是完全上的逻辑错误。
C语言,一个数据类型的长度只有以下几种:
unsigned char 或者 char 固定8位的长度,即一个字节
unsigned short 或者 short 固定16位长度,即两个字节
unsigned long 或者 long 固定 32位长度,即四个字节
float固定32位长度,即四个字节
double ,固定64位长度,即8个字节,但是在C51里,是32位,因为C51是把double转换成float来编译的。
另外还有union和struct,长度是不固定的。
在C51里扩展了bit类型,1个位的长度
长度,只取决与以上类型,与data,idata,bdata,xdata,pdata没有关系,所以,你上面的表格是错误的。
而那些data,idata,bdata,xdata,pdata等等,是变量或者常量的存储空间。
51单片机有以下几个内存模块组成:
ROM或者Flash就不说了。
RAM有------内部RAM的低128字节(00-7F)
-------内部RAM的高128字节(80-FF)---【89C51单片机没有这一段空间】
-------特殊功能寄存器(SFR)(80-FF)
------外部RAM 64K(0000-FFFF)
code表示是在Flash(ROM)中,是只读的。
data 表示的是内部RAM的低128字节,可以直接寻址,速度比较快
idata 表示内部RAM高128字节,只能是间接寻址,速度比data里的数据要慢。
pdata是外部RAM,也就是xdata中的前256个,也就是外部RAM中的00--FF,只能MOVX 间接寻址,但是,因为可以用R0做为指针,所以,速度与idata是一样的。
xdata是外部RAM的全部,也可以包括前256个,也就是说,外部RAM前256个,可以用pdata和xdata定义,都行,只能是MOVX 和 DPTR联合寻址,速度最慢。
详细内容,参考下面的链接:
http://..com/question/400032408?&oldq=1
举例:
data unsigned char a;//---放在内部RAM空间的低128字节,长度是8位
data unsigned short a;//---放在内部RAM空间的低128字节,长度是16位
data unsigned long a;//---放在内部RAM空间的低128字节,长度是32位
idata unsigned char a;//---放在内部RAM空间的高128字节,长度是8位
idata unsigned short a;//---放在内部RAM空间的高128字节,长度是16位
idata unsigned long a;//---放在内部RAM空间的高128字节,长度是32位
pdata unsigned char a;//---放在外部RAM空间的低256字节,长度是8位
pdata unsigned short a;//---放在外部RAM空间的低256字节,长度是16位
pdata unsigned long a;//---放在内部RAM空间的低256字节,长度是32位