c语言bit位定义例子,c语言中如何定义一个bit

1,c语言中如何定义一个bit使用位段就可以很好的解决LZ的问题例如 struct flags{ usigned f0:1; usigned f1:1; ......};
2,c语言中bit型变量的问题在Tubor C 和MSDN中没有bit 这个类型 。但是在单片机中有 。这和编译器有关 。(bit)0x81的结果应该是1,(bit)0x00的结果应该是0 。(bit)0xAB只要AB不同时为0 , 结果都为1 。(今天下午亲自用单片机测试过)
3,C程序bit设置标志问题这是C51 ,开发8051单片机的标准的C是没有位变量的C51中 bit型变量定义在0X20-0X2F这段区域,因为这段是可以进行位访问的bit 变量1时为真 0时为假不过我在应用上不敢用if(!keyflag) 与if(keyflag)这种写法 容易蒙我习惯用 keyflag==1 keyflag!=1 这种写法 好看,少有笔误bit 与sbit的区别bit 是定义变量用的 sbit是用来定义功能寄存器的 如 sbit P1_2=P1^2注意不要弄混,程序里一般用不到sbit ,sbit都是写好了放到头文件里的包含用的至于你说的标志 程序不全,不是很理解这段程序工作的流程,不好说是怎么用的c语言哪有bit类型?。縤f(!keyvalue)等价于 if(keyvalue != 0)再看看别人怎么说的 。c语言哪有bit类型?。縤f(!keyvalue)等价于 if(keyvalue != 0)不是应该是 sbit 吗?怎么会有bit我学的M-51系列的,用的是反转法判断按键是否按下的 。搞不清你学的是什么【c语言bit位定义例子,c语言中如何定义一个bit】
4,C语言bit型全局变量sbit是什么类型?肯定有重新定义过!extern sbit AA;extern sbit BB;就可以了吧 。其实,要搞全局变量,只需要把变量定义 , 放在任何函数的外面,就可以了可以试一下这个:先建一个头文件如:thehead.h(是保存为.h类型的)内空如下:#ifndef HEAD_H#define HEAD_Huchar 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"语句 。bit型变量可用变量类型 , 函数声明、函数返回值等,存贮于内部RAM20H~2FH 。注意:(1) 用#pragma disable说明函数和用“usign”指定的函数,不能返回bit值 。(2) 一个bit变量不能声明为指针,如bit *ptr;是错误的(3) 不能有bit数组如:bit arr[5];错误 。enum BOOL C语言(或C++)里本身没有bool这种布尔类型 。有些编译器可以识别 , 那也是因为编译器自己定义了bool类型,比如:#define bool int 。5,C语言里如何定义任意bit长度的类型来着下面就是一个例子,定义了一个结构体变量ch,包含多个位域 。structunsigned con: 8;unsigned forecolor: 4;unsigned bgcolor: 3;unsigned blink: 1;}ch;c语言中bit类型是“位”数据类型,一般在嵌入式软件中应用较多,用于io口的控制,可以是单独申明位变量,也可以申请位结构数据类型,比如:struct st_flash union unsigned char byte; /* byte access */ struct unsigned char fwe :1; /* fwe */ unsigned char swe1:1; /* swe1 */ unsigned char esu1:1; /* esu1 */ unsigned char psu1:1; /* psu1 */ unsigned char ev1 :1; /* ev1 */ unsigned char pv1 :1; /* pv1 */ unsigned char e1 :1; /* e1 */ unsigned char p1 :1; /* p1 */ } bit; } flmcr1; union unsigned char byte; /* byte access */ struct unsigned char fler:1; /* fler */ unsigned char swe2:1; /* swe2 */ unsigned char esu2:1; /* esu2 */ unsigned char psu2:1; /* psu2 */ unsigned char ev2 :1; /* ev2 */ unsigned char pv2 :1; /* pv2 */ unsigned char e2 :1; /* e2 */ unsigned char p2 :1; /* p2 */ } bit; } flmcr2; union unsigned char byte; /* byte access */ struct unsigned char eb7:1; /* eb7 */ unsigned char eb6:1; /* eb6 */ unsigned char eb5:1; /* eb5 */ unsigned char eb4:1; /* eb4 */ unsigned char eb3:1; /* eb3 */ unsigned char eb2:1; /* eb2 */ unsigned char eb1:1; /* eb1 */ unsigned char eb0:1; /* eb0 */ } bit; } ebr1; union unsigned char byte; /* byte access */ struct unsigned char eb15:1; /* eb15 */ unsigned char eb14:1; /* eb14 */ unsigned char eb13:1; /* eb13 */ unsigned char eb12:1; /* eb12 */ unsigned char eb11:1; /* eb11 */ unsigned char eb10:1; /* eb10 */ unsigned char eb9 :1; /* eb9 */ unsigned char eb8 :1; /* eb8 */ } bit; } ebr2; };

    推荐阅读