C++ Bit fields

news/2024/12/22 0:37:29/

Questions

  • “:” (colon) in C/C++ struct, what does it mean?
  • What does C++ struct syntax “a : b” mean?
  • What does :1 and :8 mean?

Example #1

https://en.wikipedia.org/wiki/Bit_field

struct BoxProps
{unsigned int  opaque       : 1;unsigned int  fill_color   : 3;unsigned int               : 4; // fill to 8 bitsunsigned int  show_border  : 1;unsigned int  border_color : 3;unsigned int  border_style : 2;unsigned char              : 0; // fill to nearest byte (16 bits)unsigned char width        : 4, // Split a byte into 2 fields of 4 bitsheight       : 4;
};

Example #2

https://en.wikipedia.org/wiki/C_syntax#Bit_fields

struct f {unsigned int  flag : 1;  /* a bit flag: can either be on (1) or off (0) */signed int    num  : 4;  /* a signed 4-bit field; range -7...7 or -8...7 */signed int         : 3;  /* 3 bits of padding to round out to 8 bits */
} g;

Example #3

https://en.cppreference.com/w/cpp/language/bit_field

struct S
{// will usually occupy 2 bytes:// 3 bits: value of b1// 2 bits: unused// 6 bits: value of b2// 2 bits: value of b3// 3 bits: unusedunsigned char b1 : 3, : 2, b2 : 6, b3 : 2;
};

Example #4

https://learn.microsoft.com/en-us/cpp/cpp/cpp-bit-fields?view=msvc-170

// bit_fields1.cpp
// compile with: /LD
struct Date {unsigned short nWeekDay  : 3;    // 0..7   (3 bits)unsigned short nMonthDay : 6;    // 0..31  (6 bits)unsigned short nMonth    : 5;    // 0..12  (5 bits)unsigned short nYear     : 8;    // 0..100 (8 bits)
};

Example #5: union bit fields & uint8

https://stackoverflow.com/questions/36255992/union-bit-fields

union {
uint8_t raw;
struct {uint8_t a : 1;uint8_t b : 2;uint8_t padding : 5;
};
} U;

http://www.ppmy.cn/news/1065196.html

相关文章

Nginx详解 一:编译安装Nginx和Nginx模块

文章目录 1.HTTP 和 Nginx1.1 Socket套接字1.2 HTTP工作机制1.2.1一次http事务1.2.2 资源类型1.2.3提高HTTP连接性能 2. I/O模型2.1 I/O模型相关概念2.2 网络I/O模型2.2.1 **阻塞型** **I/O** 模型(blocking IO)2.2.2 **非阻塞型** **I/O** **模型** **(…

Hive原理剖析

一、简介 Hive是建立在Hadoop上的数据仓库框架,提供大数据平台批处理计算能力,能够对结构化/半结构化数据进行批量分析汇总完成数据计算。提供类似SQL的Hive Query Language语言操作结构化数据,其基本原理是将HQL语言自动转换成MapReduce任务…

【从零单排Golang】第十四话:使用rate和ratelimit实现限流限速

在研发中,我们经常会面对到处理并发逻辑的场景,尤其是有时候在与第三方平台对接的场景下,会遇到请求限流限QPS的要求。对于限流或者限速,我们通常会用两种算法来满足需要: 令牌桶算法:在特定容量的桶里面装…

【附安装】R语言4.3.0安装教程

软件下载 软件:R语言版本:4.3.0语言:简体中文大小:77.74M安装环境:Win7及以上版本,64位操作系统硬件要求:CPU2.0GHz 内存4G(或更高)下载通道①百度网盘丨64位下载链接:h…

【Go 基础篇】Go 语言字符串函数详解:处理字符串进阶

大家好!继续我们关于Go语言中字符串函数的探索。字符串是编程中常用的数据类型,而Go语言为我们提供了一系列实用的字符串函数,方便我们进行各种操作,如查找、截取、替换等。在上一篇博客的基础上,我们将继续介绍更多字…

编程题练习@8-26

题目一: 题目描述 你的团队最近更新了语音识别的算法,瑰需要对更新之后的算法模型进行识别率指标统计。 语音识别率指标通常为WER(Word Error Rate)即计算语音识别文本中出现错误的字总数占标准文本中总字数的比例。为了使识别出来的文本序列和标准的文本…

【LeetCode-面试经典150题-day15】

目录 104.二叉树的最大深度 100.相同的树 226.翻转二叉树 101.对称二叉树 105.从前序与中序遍历序列构造二叉树 106.从中序与后序遍历序列构造二叉树 117.填充每个节点的下一个右侧节点指针Ⅱ 104.二叉树的最大深度 题意: 给定一个二叉树 root ,返回其…

R语言画样本不均衡组的箱线图

# 导入 ggplot2 包 library(ggplot2)# 示例数据框&#xff0c;包含数值数据和分组信息 data <- data.frame(Group c(rep("Group A",10), rep("Group B",15),rep("Group C",20)),Value c(rnorm(10, mean 10, sd 2),rnorm(15, mean 15, sd…