① c 語言中 bit與sbit的區別
bit和sbit這兩者不是c語言裡面的,而是C51裡面的;
bit和sbit的區別在於兩者功能不同,具體如下:
bit是變數類型,相當於boot 只佔一個位,最多可定128個bit變數,而sbit是給可位定址的變數的某一個位定個別名,不另占空間;
(1)c語言的bit擴展閱讀:
bit定義:
比特是英文 binary digit的縮寫,比特是表示信息的最小單位,是二進制數的一位包含的信息或2個選項中特別指定1個的需要信息量,一般來說,n比特的信息量可以表現出2的n次方種選擇;
sbit定義:
sbit是定義特殊功能寄存器的位變數,bit和sbit都是C51擴展的變數類型,應用如sbit P0_0=P0^0;//即定義P0_0為P0口的第1位,以便進行位操作,bit和int char之類的差不多,只不過char=8位, bit=1位而已,都是變數,編譯器在編譯過程中分配地址;
參考資料來源:網路-sbit
參考資料來源:網路-bit
② c語言中32-bit是什麼意思
32bit指的是CPU一次能處理的最大位數是32位
即32位處理器每次處理 4Byte(32bit)
③ bit用法——單片機C語言
bit 在C51裡面類似C語言的bool,bit定義的是一個位數據類型,只能為0或1兩個值
④ C語言中的bit指令與匯編中的BIT指令的作用相同嗎
相同。
1、C語言中的bit指令和匯編中的BIT指令都起到代替匯編指令的作用。
2、使用bit指令能實現匯編語言的大部分功能。
⑤ c語言bit操作問題
C語言支持位操作,示例如下:
/* 要操作的位元組變數為i */
unsigned char i;
i = i & 0x7f; /* 把最高位置0,其餘位不變 */
i = i | 0x80; /* 把最高位置1,其餘位不變 */
i = i & 0xbf; /* 把第二位置0,其餘位不變 */
i = i | 0x40; /* 把第二位置1,其餘位不變 */
................................
⑥ c語言的bit類型
C語言中bit類型是「位」數據類型,一般在嵌入式軟體中應用較多,用於IO口的控制,可以是單獨申明位變數,也可以申請位結構數據類型,比如:
structst_flash{/*structFLASH*/
union{/*FLMCR1*/
unsignedcharBYTE;/*ByteAccess*/
struct{/*BitAccess*/
unsignedcharFWE:1;/*FWE*/
unsignedcharSWE1:1;/*SWE1*/
unsignedcharESU1:1;/*ESU1*/
unsignedcharPSU1:1;/*PSU1*/
unsignedcharEV1:1;/*EV1*/
unsignedcharPV1:1;/*PV1*/
unsignedcharE1:1;/*E1*/
unsignedcharP1:1;/*P1*/
}BIT;
}FLMCR1;
union{/*FLMCR2*/
unsignedcharBYTE;/*ByteAccess*/
struct{/*BitAccess*/
unsignedcharFLER:1;/*FLER*/
unsignedcharSWE2:1;/*SWE2*/
unsignedcharESU2:1;/*ESU2*/
unsignedcharPSU2:1;/*PSU2*/
unsignedcharEV2:1;/*EV2*/
unsignedcharPV2:1;/*PV2*/
unsignedcharE2:1;/*E2*/
unsignedcharP2:1;/*P2*/
}BIT;
}FLMCR2;
union{/*EBR1*/
unsignedcharBYTE;/*ByteAccess*/
struct{/*BitAccess*/
unsignedcharEB7:1;/*EB7*/
unsignedcharEB6:1;/*EB6*/
unsignedcharEB5:1;/*EB5*/
unsignedcharEB4:1;/*EB4*/
unsignedcharEB3:1;/*EB3*/
unsignedcharEB2:1;/*EB2*/
unsignedcharEB1:1;/*EB1*/
unsignedcharEB0:1;/*EB0*/
}BIT;
}EBR1;
union{/*EBR2*/
unsignedcharBYTE;/*ByteAccess*/
struct{/*BitAccess*/
unsignedcharEB15:1;/*EB15*/
unsignedcharEB14:1;/*EB14*/
unsignedcharEB13:1;/*EB13*/
unsignedcharEB12:1;/*EB12*/
unsignedcharEB11:1;/*EB11*/
unsignedcharEB10:1;/*EB10*/
unsignedcharEB9:1;/*EB9*/
unsignedcharEB8:1;/*EB8*/
}BIT;
}EBR2;
};
⑦ C語言中有bit數據類型嗎
在c++中bit是位域
c語言中
bit和int
char之類的差不多,只不過char=8位,
bit=1位而已。都是變數,編譯器在編譯過程中分配地。。bit只有0和1兩種值..
⑧ C語言bit型全局變數
可以試一下這個:先建一個頭文件如:thehead.h(是保存為.h類型的)內空如下:
#ifndef
HEAD_H
#define
HEAD_H
uchar
bdata
OUT_temp;
sbit
AA
=
OUT_temp^0;
sbit
BB
=
OUT_temp^1;
sbit
CC
=
OUT_temp^2;
sbit
DD
=
OUT_temp^3;
sbit
EE
=
OUT_temp^4;
sbit
FF
=
OUT_temp^5;
sbit
GG
=
OUT_temp^6;
sbit
HH
=
OUT_temp^7;
#endif
再在每要用到上面內容的文件中加#include"thehead.h"語句。
⑨ C語言中sbit是什麼意思,與bit有什麼區別
bit : 編譯時分配空間 sbit 只能在外部定義全局變數。 sfr(特殊功能寄存器)的bit。SFR是系統指定的內存地址。 bit 動態分配的,有編譯器來指定內存地址。 bit和sbit都是C51擴展的變數類型。 sbit 要在最外面定義,就是說必須定義成外部變數.sbit定義的是SFR(特殊功能寄存器)的bit sbit更像是類型定義,不像是變數定義。 sbit: 指示說明性說明 bit 可以在外部或內部定義。 bit和int char之類的差不多,只不過char=8位, bit="1位而已"。都是變數,編譯器在編譯過程中分配地址。除非你指定,否則這個地址是隨機的。這個地址是整個可定址空間,RAM+FLASH+擴展空間。bit只有0和1兩種值,意義有點像Windows下VC中的BOOL。 bit是編譯器在的可定址區分配的一個位變數,是不定的,不是絕對地址目標。 所有可位定址的位都可由sbit指定,這包括可位定址區和SFR中的位。 sbit是對應可位定址空間的一個位,可位定址區:20H~2FH。一旦用了sbi xxx = REGE^6這樣的定義,這個sbit量就確定地址了。sbit大部分是用在寄存器中的,方便對寄存器的某位進行操作的。 sbit位寄存器是可位定址的絕對地址目標,定義後編譯器是不會改變位置的。
⑩ 為什麼C語言能進行對位(bit)操作 對位操作有什麼效果
當然可以對位進行操作。
一般來說,用位運算就是對位操作。位運算包括
^ 異或
| 位或
& 位與
~ 位求反
>> 右移位
<< 左移位
對位操作的好處是快,並且基本上和匯編一一對應,可以直接算出運算時間,計算速度。
很多要表達硬體計算,或者提高運算速度的時候,都會直接用位運算。
比如乘16,位運算就是左移4位等等。
另外一種是位域。
就是定義一種特殊的結構體,裡面的成員只有規定的幾位。
比如
struct instruction{
unsigned short sr:5;
unsigned short tr:5;
unsigned short op:6;
};
就定義了一個16bit指令的結構,其中
sr : tr : op
1-5 : 6-10 :11-16
然後就可以這樣操作
struct instruction mov_r1_r3 = {0x01, 0x03, 0x01};
那麼mov_r1_r3實際上等於0x0461
這樣編代碼一般是為了和硬體介面容易,完全的底層操作
實際代碼中極少出現,一般出現於與硬體的介面當中.