① 在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位