bit-manipulation 相关问题

个别位的操纵。使用的运算符可以包括按位AND,OR,XOR,NOT,左移和右移。

78.LeetCode/子集问题 - 使用辅助函数接受解决方案,但否则会超出内存限制

我试图使用位操作技术解决LeetCode中等问题子集[链接(https://leetcode.com/problems/subsets/)。 首先我实施的解决方案如下: 类解决方案{

回答 1 投票 0

Java 中字节中的位循环

我正在尝试实现 SHA 3 规范中的 right_encode。 https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-185.pdf 在此输入图像描述 具体的部分我是

回答 1 投票 0

数字的二进制表示形式是否是交替位,例如。 10101010、1010 等

所以我必须找出一个数字的二进制表示是否是1和0交替出现。 期望时间复杂度和空间复杂度均为O(1) 我的想法是首先找到 1 的补码...

回答 1 投票 0

如何在C中仅使用按位运算符来检查值是否大于7?

对于这道题,如果参数大于7,则要求返回1,否则返回0。 例如,如果 x 为 8,则该函数将返回 1。如果 x 为 7,则该函数将返回 0。 唯一合法的

回答 3 投票 0

Golang 对按位非运算产生奇怪的结果

包主要 导入“fmt” func SingleZeroBitAtRightMostOneBitPosition(n int) int { 返回 ^n | (n-1) } 函数主() { fmt.Println(SingleZeroBitAtRightMostOneBitPosition(128)) ...

回答 1 投票 0

通过将 2 除以减一来移位

在Java中,我试图通过除以2而不是右移(>>1)来将整数的位右移一位,并遇到了这个问题,-1(负数)无法正确移动......

回答 1 投票 0

C 宏获取大于给定数字的最小二的幂

我需要一个 C 宏来获取大于给定数字的 2 次方的最小值。 例如,FIRSTFREEBIT(0x16)(二进制 1_0110)必须等于 0x20。 我将把它用作: #包括 我需要一个 C 宏来获得比给定数字大 2 的最小幂。 例如,FIRSTFREEBIT(0x16)(二进制 1_0110)必须等于 0x20。 我将把它用作: #include <someheader.h> // defines SOME_X and SOME_Y enum { x = SOME_X, y = SOME_Y, z = FIRSTFREEBIT(x|y), t = z << 1, }; 一个类似但略有不同的SO问题: 查找大于或等于给定值的最小二幂的算法 这是我的代码,欢迎您发明更好的东西: #define __OR_RSHIFT__(n,x) ((x)|(x)>>n) #define FIRST_UNUSED_BIT(x) (1+__OR_RSHIFT__(16,__OR_RSHIFT__(8,__OR_RSHIFT__(4,__OR_RSHIFT__(2,__OR_RSHIFT__(1,x)))))) 查看 __builtin_clz GCC 内在函数。它将为您提供前导零位的数量,可用于确定第一个位集的位置。然后左移 1,乘以位置。 这是一个利用 GCC _builtin_clz 函数的编译时解决方案: // Lowest Power of 2 greater than or equal to x. Assumes integer x greater // than 0 #define LPO2(x) (1<<((sizeof(x)*8)-__builtin_clz(x-1))) int main() { printf("%d\n", LPO2(7)); // => 8 printf("%d\n", LPO2(8)); // => 8 printf("%d\n", LPO2(9)); // => 16 }

回答 3 投票 0

“分支”在设置/重置位方面意味着什么?

在一次采访中,他们问我,你如何设置或重置一点?这是一个非常简单的问题,我回答了。 之后他们问我如何在不分支的情况下做到这一点。我不知道什么分支...

回答 2 投票 0

优化伽罗瓦域算术中的 y = x*x

我有这个 C 代码来对 GF(8) 进行乘法: int32_t 伽罗瓦乘法 (int32_t a, int32_t b) { int32_t 我; int32_t掩码=0x100; int32_t y = 0; 对于(i=0;i<8;i++) { ...

回答 7 投票 0

Python 按位运算非常慢

我有一个依赖于我编写的按位运算的公式(见下文)。我希望循环 3 个维度并将该公式应用于每个元组以生成密钥。 然而,下面的代码...

回答 1 投票 0

检查 php 中位字段是否打开的正确方法是什么

检查位字段是否打开的正确方法是什么 - (在 php 中)? 我想检查来自 db(mysql) 的位字段是否打开。 这是正确的方法吗? if($位&1) 是

回答 5 投票 0

在Java中测试偶数而不使用模运算符

我该如何在Java中做到这一点?判断一个数是否能被 2 整除,最后一位数字是否为偶数。 (0,2,4,6,8) 示例:128 是,129 不是

回答 8 投票 0

测试固定集是否相等且无分支

我有一组整数 (x, y, z) 和一个接受 3 个整数 (u, v, w) 的函数。如何测试 (x,y,z) == (u,v,w) 是否?天真的方法是: 布尔匹配 = (x == u || x == v || x == w) && (y ==...

回答 5 投票 0

快速 __m256i 位操作 - 查找或清除最高或最低设置位

我正在寻找快速代码来在 __m256i 上执行以下操作,并且希望得到帮助: 清除最低有效位(设置的最低有效位) 清除最高有效位(最

回答 1 投票 0

一些快速 __m256i 位操作 - 查找或清除最高或最低设置位

我正在寻找快速代码来在 __m256i 上执行以下操作,并且希望得到帮助: 清除最低有效位(设置的最低有效位) 清除最高有效位(最

回答 1 投票 0

如果没有设置位,则无分支方式设置所有位?

我正在寻找以下内容的无分支实现: int f(int c) { 如果(c==0){ 返回0xffffffff; // 设置所有位 } 别的 { 返回c; } } 我还没遇到过什么聪明的...

回答 1 投票 0

生成前缀位掩码

我正在寻找一种可移植的方法来生成前缀位掩码,其前 n 位设置为 0 <= n <= 32 (or 64 or an arbitrary integer type bit width). Examples: prefix_bitmask(0) =

回答 4 投票 0

如果设置了最低位,则有条件异或而不分支

我有三个无符号 32 位整数,即 a、b 和 c。如果b的最低位是1,我想将c与a进行异或,并将结果存储到c中。我们可以通过以下方式做到这一点: #包括 我有三个无符号 32 位整数,例如 a、b 和 c。如果b的最低位是1,我想将c与a进行异或,并将结果存储到c中。我们可以通过以下方式做到这一点: #include <cassert> int main() { // Some values for a and c unsigned a = 16; unsigned c = 25; unsigned b = 5; // 101_2 if(b & 1) { c ^= a; } assert(c == 9); } 我可以在没有分支的情况下有条件地执行此操作,即没有 if 语句吗? 有很多方法可以做到这一点。 这是另一个,没有乘法,只有 4 次运算。 c ^= a&(-(b&1)); 这应该有效 c ^= a * ( b & 1 ); 没有 if 语句并且没有分支,您必须检查编译器的程序集转储: c ^= ~((b & 1) - 1) & a;

回答 3 投票 0

QOI 指数哈希函数的按位加权和

我最近为 QOI 图像格式的 Rust 库做出了贡献。作为编码过程的一部分,编码器会跟踪已看到的 RGBA 像素值的数组。它计算我们的指数...

回答 1 投票 0

找到特殊子数组的数量,使得第一个和最后一个元素的按位异或等于子数组中所有其他元素的异或

给定一个整数数组,找到长度至少为 3 的子数组的数量,其中子数组中第一个和最后一个元素的按位异或等于子数组中其余元素的数量....

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.