A. bit用法——单片机c语言
bit 在C51里面类似C语言的bool,bit定义的是一个位数据类型,只能为0或1两个值
B. c语言中32-bit是什么意思
32bit指的是CPU一次能处理的最大位数是32位
即32位处理器每次处理 4Byte(32bit)
C. 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;
}
D. c 语言中 bit与sbit的区别
bit和sbit这两者不是C语言里面的,而是C51里面的;
bit和sbit的区别在于两者功能不同,具体如下:
bit是变量类型,相当于boot 只占一个位,最多可定128个bit变量,而sbit是给可位寻址的变量的某一个位定个别名,不另占空间;
(4)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
E. C语言bit型全局变量
sbit是什么类型?肯定有重新定义过!
extern
sbit
AA;
extern
sbit
BB;
就可以了吧。
其实,要搞全局变量,只需要把变量定义,放在任何函数的外面,就可以了
F. c语言bit操作问题
C语言支持位操作,示例如下:
/* 要操作的字节变量为i */
unsigned char i;
i = i & 0x7f; /* 把最高位置0,其余位不变 */
i = i | 0x80; /* 把最高位置1,其余位不变 */
i = i & 0xbf; /* 把第二位置0,其余位不变 */
i = i | 0x40; /* 把第二位置1,其余位不变 */
................................
G. 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;
};
H. C语言中sbit是什么意思,与bit有什么区别
1.C语言中没有sbit关键字,这个是编译器里面的关键字。 sbit应该是keil c51中的关键字,表示位寄存器。一个端口8位,用这个关键字,可以单个位操作。
2.bit和sbit都是C51扩展的变量类型。典型应用是:sbit P0_0=P0^0;//即定义P0_0为P0口的第1位,以便进行位操作。bit和int char之类的差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址。除非你指定,否则这个地址是随机的。这个地址是整个可寻址空间,RAM+FLASH+扩展空间。bit只有0和1两种值,意义有点像Windows下VC中的BOOL。
I. C语言里如何定义任意bit长度的类型来着
下面就是一个例子,定义了一个结构体变量ch,包含多个位域。
struct{
unsigned con: 8;
unsigned forecolor: 4;
unsigned bgcolor: 3;
unsigned blink: 1;
}ch;
J. 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的一个扩展,在其他编译器上是无法编译的