标签: bit

C++中的位数组

在使用Project Euler问题时,我经常需要大型(> 10**7)位数组.

我的正常方法是:

bool* sieve = new bool[N];

bool sieve[N];
Run Code Online (Sandbox Code Playgroud)

当N = 1,000,000时,我的程序使用1兆字节(8*1,000,000位).

在c ++中使用存储位数组是否比bool更有效?

c++ arrays bit

20
推荐指数
3
解决办法
4万
查看次数

如何使Xvfb工作在32位颜色

任何人都可以告诉我如何使Xvfb工作在32位颜色?例如,Vnc4server工作正常,但不适合我的目的.

> /etc/X11# Xvfb :1 -screen 0 1600x1200x24
error opening security policy file /etc/X11/xserver/SecurityPolicy
(EE) XKB: Couldn't open rules file /usr/share/X11/xkb/rules/base
Could not init font path element /usr/share/fonts/X11/cyrillic, removing from list!
[config/hal] couldn't initialise context: (null) ((null))
FreeFontPath: FPE "/usr/share/fonts/X11/misc" refcount is 2, should be 1; fixing.
Run Code Online (Sandbox Code Playgroud)

阿卡 - 它有效,同时:

> /etc/X11# Xvfb :1 -screen 0 1600x1200x32
Fatal server error:
Couldn't add screen 0
Run Code Online (Sandbox Code Playgroud)

linux colors bit

19
推荐指数
1
解决办法
8967
查看次数

如何从C中的数字中提取特定位?

我需要在C中提取short数据类型的特定部分(没有位).

例如,我的二进制52504为11001101000 11000,我想要前6(FROM LSB - > MSB即011000十进制24)位和其余10位(11001101000十进制820).

类似地,我希望这个函数过于通用,不能提取给定"start"和"end"的特定位数(即位块等效于一些十进制值).

我检查了其他帖子,但那些没有帮助,因为给定的功能没有太多的概括.

我需要一些可以用于shortC数据类型的东西.

编辑

我有2048字节的短数组.每个像素为10位.所以我的16位组成每个字节占用一些时间2像素数据,有时3像素数据.

喜欢

(PIXEL:0,1)10 BITS + 6 BITS

然后(PIXEL:1,2,3)4 BITS(剩余第1个像素位)+ 10个BITS + 2个BITS.

等等..这个模式继续......所以,我想要提取每个像素并制作一个整个数组,让每个像素被占用在整个字节(16位)上,如... 1字节应该包含1 DATA PIXEL,另一个BYTE应该包含整个16位的其他PIXEL值,依此类推.

c bit-manipulation bit-shift bit

19
推荐指数
3
解决办法
7万
查看次数

请解释Kernighan的位计数算法背后的逻辑

在以整数时间复杂度读取Bits计数算法(Brian Kernighan)之后,直接遵循此问题.有问题的Java代码是

int count_set_bits(int n) {
  int count = 0;
    while(n != 0) {
      n &= (n-1);
      count++;
    }
 }
Run Code Online (Sandbox Code Playgroud)

我想了解n &= (n-1)这里取得了什么成果?我在另一个漂亮的算法中看到了类似的构造,用于检测数字是否是2的幂,如:

if(n & (n-1) == 0) {
    System.out.println("The number is a power of 2");
}
Run Code Online (Sandbox Code Playgroud)

java algorithm bit-manipulation bit

19
推荐指数
1
解决办法
4785
查看次数

Python:从一个字节中提取位

我在python中读取二进制文件,文件格式的文档说:

标志(二进制)含义

1 nnn nnnn表示要跟随一个要复制的数据字节nnn nnnn(最多127次).

0 nnn nnnn表示要跟随nnnnnnn字节的图像数据(最多127个字节),并且没有重复.

n 000 0000终点字段.表示行记录的结束.n的值可以是0或1.请注意,行结束字段是必需的,并且它反映在上面提到的行记录字段的长度中.

在读取文件时,我期待我1 nnn nnnn所在的字节返回到nnn nnnn零件应该为50的位置.

我已经能够使用以下方法执行此操作:

flag = byte >> 7
numbytes = int(bin(byte)[3:], 2)
Run Code Online (Sandbox Code Playgroud)

但是,numbytes计算感觉就像一个廉价的解决方法.

我可以做更多的数学运算来完成numbytes的计算吗?

你会怎么做?

python byte bit

18
推荐指数
2
解决办法
4万
查看次数

如何使用SqlDataReader获取一些值并将其转换为bool?

我正在使用简单查询从数据库中检索用户信息.

select * from dbo.[User] u where u.Email = @email
Run Code Online (Sandbox Code Playgroud)

然后我尝试获取一个名为IsConfirmed的列的值(在数据库中表示为位类型列)并将其转换为bool.

bool isConfirmed = int.Parse(sqlDataReader["IsConfirmed"].ToString()) == 1;
Run Code Online (Sandbox Code Playgroud)

然后我得到一个FormatException错误,指出"输入字符串的格式不正确.".

我看到一个类似的问题,答案提供了这段代码:

bool isConfirmed = sqlDataReader.GetBoolean(0);
Run Code Online (Sandbox Code Playgroud)

但这对我的情况不起作用,因为我不知道IsConfirmed列的索引,我不想知道它.我想使用列名.

c# boolean sqldatareader bit

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

测试按位枚举值

我以前没有真正使用过按位枚举,我只是想确保我的测试是正确的.我最感兴趣的是测试值None和All.我们从使用此枚举的Web服务接收数据,以对某些数据进行分类.鉴于此,我假设nether None和All将与任何其他值组合.

给出以下按位枚举定义;

[System.FlagsAttribute()]
public enum TrainingComponentTypes : int
    {
        None = 0,
        AccreditedCourse = 1,
        Qualification = 2,
        Unit = 4,
        SkillSet = 8,
        UnitContextualisation = 16,
        TrainingPackage = 32,
        AccreditedCourseModule = 64,
        All = 127,
    }
Run Code Online (Sandbox Code Playgroud)

我在这个MSDN网站上阅读了关于FlagAttributes 的以下引用;

使用None作为其值为零的标志枚举常量的名称.您不能在按位AND运算中使用None枚举常量来测试标志,因为结果始终为零.但是,您可以在数值和None枚举常量之间执行逻辑而非按位比较,以确定是否设置了数值中的任何位.

此实例中的逻辑比较是否指向枚举的正常相等性测试?例如;

TrainingComponentTypes tct = TrainingComponentTypes.None; 
if (tct == TrainingComponentTypes.None) 
{ ... }
Run Code Online (Sandbox Code Playgroud)

为了进行逐位比较,我正在执行以下操作;

 TrainingComponentTypes tct = TrainingComponentTypes.AccreditedCourse | TrainingComponentTypes.Qualification | TrainingComponentTypes.TrainingPackage;
 Assert.IsTrue((tct & TrainingComponentTypes.AccreditedCourse) == TrainingComponentTypes.AccreditedCourse, "Expected AccreditedCourse as part the enum");

 Assert.IsFalse((tct …
Run Code Online (Sandbox Code Playgroud)

c# comparison enums bit-manipulation bit

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

访问char c ++中的各个位

我将如何访问c ++类型中的各个位, char或者例如任何c ++其他类型.

c++ bit

17
推荐指数
2
解决办法
3万
查看次数

如何修改整数位?

我有一个带值7(0b00000111)的整数我想用函数替换它13(0b00001101).替换整数位的最佳算法是什么?

例如:

set_bits(somevalue, 3, 1) # What makes the 3rd bit to 1 in somevalue?
Run Code Online (Sandbox Code Playgroud)

python binary bit

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

数字中设置的位数

以下是一个神奇的公式,它给出了一个数字中设置的位数(汉明重量).

/*Code to Calculate count of set bits in a number*/
int c;
int v = 7;
v = v - ((v >> 1) & 0x55555555);                    // reuse input as temporary
v = (v & 0x33333333) + ((v >> 2) & 0x33333333);     // temp
c = ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24; // count
printf(" Number of Bits is %d",c);
/*-----------------------------------*/
Run Code Online (Sandbox Code Playgroud)

来自:http: //graphics.stanford.edu/~seander/bithacks.html

有谁能解释一下这背后的理由?

c c++ bit-manipulation bitmap bit

16
推荐指数
1
解决办法
3625
查看次数