首页 > 其他分享 >C位域

C位域

时间:2024-06-18 14:45:02浏览次数:13  
标签:set unsigned char field printf 位域 bit

// Online C compiler to run C program online
#include <stdio.h>

typedef struct bits
{
    unsigned char b0 : 1;
    unsigned char b1 : 1;
    unsigned char b2 : 1;
    unsigned char b3 : 1;

    unsigned char b4 : 1;
    unsigned char b5 : 1;
    unsigned char b6 : 1;
    unsigned char b7 : 1;
}BIT, *pBIT;

int main() {
    
    BIT bit_field;
    pBIT p_bit_field = &bit_field;
    
    p_bit_field->b0 = 1;
    p_bit_field->b1 = 1;
    p_bit_field->b2 = 1;
    p_bit_field->b3 = 1;
    p_bit_field->b4 = 1;
    p_bit_field->b5 = 1;
    p_bit_field->b6 = 1;
    p_bit_field->b7 = 1;
    
    if(p_bit_field->b0 & 1)
    {
        printf("bit0 is set\n");     
    }
    if(p_bit_field->b1 & 1)
    {
        printf("bit1 is set\n");     
    }
    if(p_bit_field->b2 & 1)
    {
        printf("bit2 is set\n");     
    }
    if(p_bit_field->b3 & 1)
    {
        printf("bit3 is set\n");    
    }
    if(p_bit_field->b4 & 1)
    {
        printf("bit4 is set\n");     
    }
    if(p_bit_field->b5 & 1)
    {
        printf("bit5 is set\n");     
    }
    if(p_bit_field->b6 & 1)
    {
        printf("bit6 is set\n");     
    }
    if(p_bit_field->b7 & 1)
    {
        printf("bit7 is set\n");     
    }

    return 0;
}

标签:set,unsigned,char,field,printf,位域,bit
From: https://www.cnblogs.com/archerqvq/p/18254307

相关文章

  • C语言结构体位域的使用技巧(联合体妙用)
    C语言结构体位域的使用技巧基本概念在C语言中,位域(BitFields)是一种数据结构,它允许程序员访问内存中的单个位。位域通常用于硬件编程,例如嵌入式系统开发,因为它们允许程序员直接访问和控制硬件寄存器的特定位。位域在不同的编译器和平台上可能会有不同的内存对齐和打包行为,......
  • C/C++ 位域注意事项
    C/C++位域注意事项:一、位域定义与布局可以使用无名域位,这样的域位主要用来补齐或调整位置,但不能被直接使用。位域的长度不能大于其类型说明符中指定类型的固有长度。例如,int类型的位域长度不能超过32位,char的位域长度不能超过8位。二、位域的使用与对齐在使用位......
  • C语言 位域
    C语言的位域(bit-field)是一种特殊的结构体成员,允许我们按位对成员进行定义,指定其占用的位数。如果程序的结构中包含多个开关的变量,即变量值为TRUE/FALSE,如下:struct{unsignedintwidthValidated;unsignedintheightValidated;}status;这种结构需要8字节的......
  • iOS - Runtime-isa详解(位域、union(共用体)、位运算)
    文章目录iOS-Runtime-isa详解(位域、union(共用体)、位运算)前言1.`位域`介绍1.1思路1.2示例-结构体1.3示例-union(共用体)1.3.1说明1.4结构体对比union(共用体)2.arm64架构对isa的优化2.1位域内容nonpointerhas_assochas_cxx_dtorshiftclsmagicweakly_referen......
  • 共用体与位域 --20240310
    共用体共用体(Union)是一种特殊的数据类型,它允许在同一个内存位置存储不同的数据类型。共用体的所有成员共享同一块内存空间,因此同一时间只能存储其中一个成员的值。共用体的定义和结构体类似,使用关键字union,后面跟着成员列表。每个成员可以是不同的数据类型,但共用体的所有成员都......
  • C 结构体中的位域概念
    位域一、基本概念1.1位域的概念结构体中的冒号表示位域,如:structbit_struct{unsignedintbit1:10;unsignedintbit2:8;unsignedintbit3:14;}data1;//sizeofdata1=4structbit_struct{unsignedintbit1:10;unsignedintbit2:8......
  • C#对象二进制序列化优化:位域技术实现极限压缩
    目录1.引言2.优化过程2.1.进程对象定义与初步分析2.2.排除Json序列化2.3.使用BinaryWriter进行二进制序列化2.4.数据类型调整2.5.再次数据类型调整与位域优化3.优化效果与总结1.引言在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们需要开发一个监控程序,该......
  • 基于反序位域的大端协议处理方法
    综述本文主要描述如何在C/C++软件中以一种简便的方法处理通信协议中的大小端转换方法;由于资源限制,目前在仅在windows平台的部分编译器与cpu中进行验证。大小端数据在内存中存储的基础单元是字节(Byte),最小的存储单元是位(bit);在常用的ARM架构中,按照字节处理数据时,数据总是低位在后,......
  • C#对象二进制序列化优化:从位域技术优化压缩数据大小
    目录1.引言2.优化过程2.1.进程对象定义与初步分析2.2.排除Json序列化2.3.使用BinaryWriter进行二进制序列化2.4.数据类型调整2.5.再次数据类型调整与位域优化3.优化效果与总结 1.引言在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们......
  • C#对象二进制序列化优化:位域技术实现极限压缩
    目录1.引言2.优化过程2.1.进程对象定义与初步分析2.2.排除Json序列化2.3.使用BinaryWriter进行二进制序列化2.4.数据类型调整2.5.再次数据类型调整与位域优化3.优化效果与总结1.引言在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们需要开发一个监控程序......