c++ - std::bitset 位顺序是可移植的吗?

标签 c++ portability bitset

C++ 对位排序有什么规定吗?我特别致力于协议(protocol)数据包布局,我怀疑是否有一种可移植的方法来指定将某个数字写入位 5、6、7,其中位 5 是“最重要的”。

我的问题:

  • 0x01 是否总是表示为第 7 位已设置的字节?
  • bitset<8>().set(7).to_ulong()总是等于 1?

最佳答案

自 20.5/3 (ISO/IEC 14882:2011)

When converting between an object of class bitset and a value of some integral type, bit position pos corresponds to the bit value 1 << pos.

bitset<8>().set(7).to_ulong()保证是 (1 << 7) == 128 .

关于c++ - std::bitset 位顺序是可移植的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7889956/

相关文章:

c++ - std::ifstream 缓冲区缓存

c - 如何为 macOS 构建可移植的静态 C 库

java - 如何将二进制序列末尾的零存储到 BitSet (Java) 中?

关于字符串 Bitset 操作的 C++ 新手

Java:检查多个位 vector/位集是否相交的最快方法?

C++14:具有通用 std::function 作为类成员的通用 lambda

c++ - 将特征向量序列化为 QDataStream

c++文件夹仅搜索

c++ - Windows (Visual C) 是否有 unistd.h 的替代品?

C: <limits.h> 是跨平台的吗?