28得票2回答
当前是否有使用C++编译器的系统,其中int类型的宽度超过32位?

C++标准仅规定int必须至少为16位宽。根据cppreference的说法,它通常是16位或32位: data model int width in bits ---------------------------------- C++ standard at leas...

26得票6回答
从一个字节中获取n个位

我遇到了一些抓取字节中n位的小麻烦。 我有一个无符号整数。假设我们的十六进制数字是0x2A,即十进制数42。在二进制中它看起来像这样:0010 1010。如何获取前五位(00101)和接下来的三位(010),并将它们放入单独的整数中? 如果有人能帮助我,那就太好了!我知道如何从一个字节中提...

26得票1回答
1字节等于8位。这背后的逻辑是什么?

为什么不是4位或16位? 我猜想有一些与硬件相关的原因,我想知道为什么8位1字节成为了标准。

26得票2回答
在Python中进行位域操作的最佳方法是什么?

我正在阅读一些通过UDP传输的MPEG传送流协议,并且它包含了一些奇怪的位字段(例如长度为13)。我正在使用“struct”库进行广义解包,但是否有一种简单的方法来说“获取接下来的13个位”,而不必手动调整位操作?我想要像C语言处理位字段的方式那样做(而不必退回到C语言)。 有什么建议吗?

25得票7回答
在我的代码中,位域结构体的大小不准确

我正在学习C语言的基础知识,现在来到了位域结构体章节。书中展示了一个包含不同类型数据的结构体例子:多种布尔类型和多种无符号整数。 书中声明该结构体大小为16位,而如果不使用填充(padding),该结构体大小将只有10位。 这是书中例子所使用的结构体:#include <stdio....

25得票3回答
CHAR_BIT是否可能大于8?

ISO C标准要求CHAR_BIT至少为8。 由于POSIX规定CHAR_BIT等于8,并且(几乎?)所有网络和通信标准都使用八位字节,因此是否存在任何当代C实现中的CHAR_BIT> 8? (注意:我对使用18或36位字的历史计算机体系结构不感兴趣。这是一个关于C在当前硬件上使用的问题;...

25得票5回答
如何使用SqlDataReader获取位值并将其转换为布尔值?

我正在使用简单的查询从数据库检索用户信息。select * from dbo.[User] u where u.Email = @email 我接着尝试获取一个名为IsConfirmed的列的值(它在数据库中表示为位类型列),并将其转换为bool型。bool isConfirmed = int...

25得票4回答
如何在C语言中翻转字节中的特定位?

我正在尝试使用掩码并操作字节中的特定位。 例如: 我想编写一段C程序,可以翻转特定位置上的两个位,例如第0位和第三位。因此,11100011将变为01110011。 如何交换这些位?

24得票7回答
为什么存在字节?为什么不能只使用位?

在大多数系统中,一个字节由8个比特组成。 字节通常代表程序员可能使用的最小数据类型。根据编程语言,数据类型可能被称为char或byte。 有些数据类型(布尔值、小整数等)可以使用比一个字节更少的位来存储。然而,在我所知道的任何编程语言中,都不支持使用少于一个字节的存储方式(原生支持)。 ...

24得票8回答
在C++中的二进制位数组

在解 Project Euler 问题时,我经常需要处理大的(>10**7)位数组。 我的通常解决方案有:bool* sieve = new bool[N]; bool sieve[N]; 当 N = 1,000,000 时,我的程序使用了 1 兆字节 (8 * 1,000,000 位)。...