c語言bit
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;
};
2. 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"語句。
3. c語言中如何定義一個bit
1、在c語言中定義bit型變數,可以使用位域來自定義。
位域的定義和位域變數的說明位域定義與結構定義相仿,其形式為:
struct 位域結構名
{ 位域列表 };
其中位域列表的形式為: 類型說明符 位域名:位域長度;
2、示例:通過位域來計算IEEE754浮點數標准中,單精度浮點數的最大值、最小值以及最小弱規范數。
#include<stdio.h>
typedefstructFP_SINGLE
{
unsigned__int32fraction:23;
unsigned__int32exp:8;
unsigned__int32sign:1;
}fp_single;
intmain()
{
floatx;
fp_single*fp_s=(fp_single*)&x;
fp_s->sign=0;
fp_s->exp=0xfe;
fp_s->fraction=0x7fffff;
printf("float最大數:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0x1;
fp_s->fraction=0x0;
printf("float最小數:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0;
fp_s->fraction=0x1;
printf("float最小弱規范數:%le ",(double)x);
return0;
}
4. c語言中32-bit是什麼意思
32bit指的是CPU一次能處理的最大位數是32位
即32位處理器每次處理 4Byte(32bit)
5. bit用法——單片機C語言
bit 在C51裡面類似C語言的bool,bit定義的是一個位數據類型,只能為0或1兩個值
6. C語言中(bit(X[31],4))表示什麼
bit(X[31],4),這是個自定義的函數。
它表示什麼?
樓主應該給出該函數的代碼。
7. C語言里如何定義任意bit長度的類型來著
下面就是一個例子,定義了一個結構體變數ch,包含多個位域。
struct{
unsigned con: 8;
unsigned forecolor: 4;
unsigned bgcolor: 3;
unsigned blink: 1;
}ch;
8. c語言 vc 單片機 定義bit數據類型
vc裡面可以定義bit的數據類型么?
VC里不能定義bit數據類型,但是可以定義bool類型,bool類型佔用4位元組內存空間
要引用哪個頭文件?
不需要引用
c語言存儲的最小單元不是byte么?
一般來說是byte,但是像51這類單片機具有位定址功能,所以允許使用bit類型
c裡面定義的話是不是先要定義一個byte常量,然後再在這個byte上面進行位操作吧,也不能直接定義bit類型吧
keil c51裡面可以直接定義bit類型,但是像vc這些pc上的應用程序不允許,bit類型是keil c51裡面對標准c的一個擴展,在其他編譯器上是無法編譯的
9. c語言中bit型變數的問題
在Tubor C 和MSDN中沒有bit 這個類型。但是在單片機中有。這和編譯器有關。
(bit)0x81的結果應該是1,(bit)0x00的結果應該是0。
(bit)0xAB只要AB不同時為0,結果都為1。 (今天下午親自用單片機測試過)
10. c語言bit操作問題
C語言支持位操作,示例如下:
/* 要操作的位元組變數為i */
unsigned char i;
i = i & 0x7f; /* 把最高位置0,其餘位不變 */
i = i | 0x80; /* 把最高位置1,其餘位不變 */
i = i & 0xbf; /* 把第二位置0,其餘位不變 */
i = i | 0x40; /* 把第二位置1,其餘位不變 */
................................