问题标签 [bit-fields]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
22220 浏览

c - C中变量名后的冒号

可能重复:
结构声明中的冒号是什么意思,例如:1、:7、:16 或:32?

这是参考页面的 C 代码示例。

'8'和'8'本身之前的冒号是什么意思?

0 投票
5 回答
15403 浏览

c++ - 位域与位集

我想将位存储在数组中(如结构)。所以我可以遵循以下两种方法中的任何一种

方法 1 (AN 1)

方法 2 (AN 2)

为什么有人更喜欢 AN 2 而不是 AN 1?

0 投票
1 回答
698 浏览

tsql - 如何在 TSQL 中读取/写入完整的 32 位或 64 位 int 或 bigint 位掩码字段

设置第 32 位和第 64 位很棘手。

32位解决方案:

我让它适用于 32 位字段。诀窍是在将 POWER 函数的返回值转换为 int 之前将其转换为 binary(4)。如果您尝试直接转换为 int,而不先转换为 binary(4),则在对第 32 位(索引 31)进行操作时会出现算术溢出异常。此外,您必须确保传递给 POWER 的表达式具有足够大的类型(例如 bigint)以存储最大返回值 (2^31),否则 POWER 函数将引发算术溢出异常。


64位问题:

我打算对 64 位字段使用类似的方法,但是我发现 POWER 函数返回的值不准确,尽管表达式/返回值使用了 decimal(38) 类型。例如:“select POWER(CAST(2 as decimal(38)), 64)”返回 18446744073709552000(只有前 16 位数字是准确的)而不是 18446744073709551616 的正确值。即使我只将 2 提高到63次方,那个结果还是不准确的。

POWER 函数的文档表明“如果使用货币或数字数据类型,则内部转换为浮点数会导致精度损失。” (注意数字类型在功能上等同于十进制类型)。

我认为正确处理 64 位字段的唯一方法是对它们的 32 位一半进行操作,但这需要对 @bitindex 属性进行额外检查,以查看我需要对哪一半进行操作。是否有任何内置函数或更好的方法来显式设置 TSQL 中 32 位和 64 位位掩码字段中的最终位?

0 投票
5 回答
2231 浏览

c++ - 迭代位域的成员

我们有这个例子:

如何“自动”访问成员,例如:
ce{0-10} ?
说如果我想读 c.e0,那么 c.e1 ...
如果我的结构将有 1000 个元素,我认为我不应该写这么多代码,对吧?

你能帮我一个解决方法,一个想法吗?
我提到我已经阅读了与此问题相关的其他帖子,但我没有找到解决方案。

非常感谢 !

0 投票
4 回答
34129 浏览

c - 如何确定/测量具有位域的结构的大小?

  • int b:31输出为 8。
  • int b:1输出为 4。
  • int b:32输出为 12。

有人可以解释这个原因吗?

0 投票
11 回答
35509 浏览

c++ - 什么时候值得使用位域?

使用 C 的位域实现是否值得?如果是这样,它什么时候使用过?

我正在查看一些仿真器代码,看起来芯片的寄存器没有使用位字段实现。

这是出于性能原因(或其他原因)而避免的事情吗?

是否还有使用位域的时候?(即固件放在实际芯片等)

0 投票
5 回答
7924 浏览

c - 如何在 C 程序中声明一个无符号整数

在此链接上,我遇到了 http://lxr.linux.no/#linux+v2.6.36/include/linux/pci.h#L299 整数声明 unsigned int is_added:1;我已经制作了 C 程序并在其中声明了整数,但在上面我看到使用 : 那是什么语法?

0 投票
5 回答
6526 浏览

c++ - 零长度位域的实际使用

我对 C 不太确定,但 C++ 允许长度为 0 的未命名位域。例如:

  • 问题一:你能想到这个有什么实际用途?
  • 问题二:您知道哪些现实世界的实际用途(如果有)?

在冰罪的回答之后编辑了这个例子

编辑:好的,感谢当前的答案,我现在知道了理论目的。但问题是关于实际用途的,所以它们仍然成立:)

0 投票
3 回答
8706 浏览

c - 位域的哪一端是最高有效位?

我正在使用 Visual Studio 2008 为 Windows XP/Vista/7 编写 C++ 应用程序。我的一些结构使用位字段,如示例所示。

字段的哪一端是最高有效位?

0 投票
4 回答
3797 浏览

c - 你如何从位域转换为指针?

我编写了以下代码,它产生了

警告:初始化使指针从整数而不进行强制转换

警告:从不同大小的整数转换为指针

来自 gcc (GCC) 4.1.1 20070105 (Red Hat 4.1.1-52)

如何让警告消失?无论我尝试过什么投射,似乎总是会出现警告。

谢谢,陈兹