Tag: 位操作

Python的两个补充

python中有一个内置的函数,它将二进制string,例如“111111111111”,转换为二进制补码整数 -1?

C / C ++:强制位字段顺序和alignment

我读过结构中位字段的顺序是特定于平台的。 如果我使用不同的编译器特定的打包选项,那么这个保证数据是否按照正确的顺序存储呢? 例如: struct Message { unsigned int version : 3; unsigned int type : 1; unsigned int id : 5; unsigned int data : 6; } __attribute__ ((__packed__)); 在具有GCC编译器的英特尔处理器上,字段按照显示的内容放在内存中。 Message.version是缓冲区中的前3位,并且接着是Message.type。 如果我为各种编译器find等效的结构打包选项,这是跨平台的吗?

XORvariables交换如何工作?

有人可以向我解释如何交换两个variables没有临时variables的作品? void xorSwap (int *x, int *y) { if (x != y) { *x ^= *y; *y ^= *x; *x ^= *y; } } 我知道它做了什么,但是有人能通过它的工作逻辑来引导我吗?

在Java中乘法和除法比移位更快吗? 。净?

如果碰巧使用的是2的幂,那么左右移位比显然要快于大部分甚至全部CPU的乘法和除法操作。然而,这会降低某些读者和一些algorithm的代码的清晰度。 对于性能来说,位移是非常必要的,还是我希望编译器或虚拟机能够注意到这种情况并对其进行优化(特别是当“2的幂”是文字时)? 我主要对Java和.NET的行为感兴趣,但也欢迎对其他语言实现的见解。

对枚举最常见的C#按位操作

对于我的生活,我不记得如何设置,删除,切换或testing位字段。 要么我不确定,要么混合起来,因为我很less需要这些。 所以一个“一点点小抄”将是很好的。 例如: flags = flags | FlagsEnum.Bit4; // Set bit 4. 要么 if ((flags & FlagsEnum.Bit4)) == FlagsEnum.Bit4) // Is there a less verbose way? 你可以给所有其他常用操作的例子,最好在C#语法中使用[Flags]枚举?

我怎样才能乘以和仅使用位移和添加?

我怎样才能乘以和仅使用位移和添加?

在有符号整数上进行算术位移

我想弄清楚算术位移运算符在C中的工作方式,以及它将如何影响带符号的32位整数。 为了简单起见,假设我们在一个字节(8位)内工作: x = 1101.0101 MSB[ 1101.0101 ]LSB 阅读堆栈溢出和一些网站上的其他post,我发现: <<将转向MSB(在我的情况左边),并用0填充“空”LSB位。 而且>>将移向LSB(在我的情况下是右边的),并用MS位填充“空”位 因此, x = x << 7将导致将LSB移到MSB,并将所有内容都设置为0。 1000.0000 现在,让我们说,我会>> 7 ,最后的结果。 这会导致[0000.0010] ? 我对吗? 关于换class经营者的假设我是否正确? 我刚在我的机器上testing过,** int x = 1; //000000000……01 x = x << 31; //100000000……00 x = x >> 31; //111111111……11 (Everything is filled with 1s !!!!!) 为什么?

C中的移位算子(<<,>>)是算术还是逻辑?

在C中,移位运算符( << , >> )是算术还是逻辑?

什么是最快/最有效的方法来find一个整数在C中的最高设置位(MSB)?

如果我有一个整数n,我想知道最重要的位的位置(也就是说,如果最低有效位是在右边,我想知道最左边的位是1)的位置,什么是最快/最有效的找出方法? 我知道POSIX在strings.h中支持一个ffs()方法来查找第一个设置位,但似乎没有对应的fls()方法。 有没有一些真正明显的做法,我失踪了? 如果你不能使用POSIX函数来实现可移植性呢? 编辑:如何在32位和64位体系结构上工作的解决scheme(许多代码清单看起来像只能在32位整数)。

按位操作和使用

考虑这个代码: x = 1 # 0001 x << 2 # Shift left 2 bits: 0100 # Result: 4 x | 2 # Bitwise OR: 0011 # Result: 3 x & 1 # Bitwise AND: 0001 # Result: 1 我可以理解Python(和其他语言)中的算术运算符,但我从来没有理解“按位”运算符。 在上面的例子中(从一本Python书中),我理解左移,而不是其他两个。 另外,实际使用的按位运算符是什么? 我会欣赏一些例子。