相关疑难解决方法(0)

为什么布尔1字节而不是1位大小?

在C++中,

  • 为什么布尔1字节而不是1位大小?
  • 为什么不存在类似4位或2位整数的类型?

在为CPU编写仿真器时,我错过了上述内容

c++ cpu-architecture

115
推荐指数
8
解决办法
5万
查看次数

为什么没有定义Java的布尔基元大小?

Java虚拟机规范说有布尔有限的支持原始类型.

没有专门针对布尔值操作的Java虚拟机指令.相反,Java编程语言中对布尔值进行操作的表达式被编译为使用Java虚拟机int数据类型的值.

以上暗示(虽然我可能误解了它)在操作布尔值时使用int数据类型,但这是一个32位内存构造.假设布尔值仅代表1位信息:

  • 为什么不使用byte或short类型作为布尔值而不是int的代理?
  • 对于任何给定的JVM,什么是最可靠的方法来找出用于存储布尔类型的确切内存量?

java boolean

108
推荐指数
3
解决办法
6万
查看次数

sizeof(bool)是否在C++语言标准中定义?

我在标准文档中找不到答案.C++语言标准是否要求sizeof(bool)始终为1(1个字节),还是要定义此大小的实现?

c++ boolean sizeof implementation-defined-behavior

107
推荐指数
3
解决办法
6万
查看次数

1字节!= 8位的系统?

我一直在读句子

不要依赖大小为8位的1字节

使用CHAR_BIT而不是8作为常量来转换位和字节

等等.今天有什么现实生活系统,这是真的吗? (我不确定C和C++之间是否存在差异,或者它是否与语言无关.如果需要,请重新加入.)

c c++ history byte computer-architecture

85
推荐指数
6
解决办法
2万
查看次数

C中的位域操作

在C中用单位测试和设置单个位的经典问题可能是最常见的中级编程技能之一.您可以使用简单的位掩码进行设置和测试

unsigned int mask = 1<<11;

if (value & mask) {....} // Test for the bit
value |= mask;    // set the bit
value &= ~mask;   // clear the bit
Run Code Online (Sandbox Code Playgroud)

一篇有趣的博客文章认为,这容易出错,难以维护,而且做法不佳.C语言本身提供了类型安全和可移植的位级访问:

typedef unsigned int boolean_t;
#define FALSE 0
#define TRUE !FALSE
typedef union {
        struct {
                boolean_t user:1;
                boolean_t zero:1;
                boolean_t force:1;
                int :28;                /* unused */
                boolean_t compat:1;     /* bit 31 */
        };
        int raw;
} flags_t;

int
create_object(flags_t flags)
{
        boolean_t is_compat = flags.compat;

        if (is_compat) …
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation

46
推荐指数
11
解决办法
5万
查看次数

如何在 C++ 中管理位/二进制?

我需要做的是打开一个包含 0 和 1 的文本文件,以查找文件中各列之间的模式。

所以我的第一个想法是将每一列解析成一个大的 bool 数组,然后在列之间(现在在数组中)进行逻辑处理。直到我发现 bool 的大小实际上是一个字节而不是一点,所以我会浪费 1/8 的内存,将每个值分配给一个 bool。

它甚至与 800x800 值的网格相关吗?处理这个问题的最佳方法是什么?如果答案复杂,我将不胜感激

c++ text boolean input char

4
推荐指数
1
解决办法
381
查看次数