bit-manipulation 相关问题

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

是否有一种通用方法来优化区分两个任意整数集的按位表达式?

对于上下文,我需要为 0 到 7 之间的整数编写一个测试,对于 {1,3,4,6} 计算结果为 true,对于 {0,2,5,7} 计算结果为 false。我想了几分钟是否有可能......

回答 1 投票 0

如何仅使用 + - & | 向右移动并测试 >、< ==

之前询问过,但由于缺乏细节而被关闭。所以这里有更多信息 我正在研究 cp,没有轮换或轮换。 它支持 加减法 逻辑 & 和逻辑或 条件跳转...

回答 1 投票 0

如何删除 C 中的标志?

有一个变量包含一些标志,我想删除其中一个。但我不知道如何删除它。 这是我设置标志的方法。 my.emask |= ENABLE_SHOOT;

回答 4 投票 0

语句 if (counter & (1<<j)) mean and how does it work?

我正在研究子序列的算法。 该声明的含义是什么: 如果(计数器&(1< 我正在研究子序列算法。 这句话的含义是什么: if (counter & (1<<j)) 在以下计划的范围内: void printSubsequences(int arr[], int n) { unsigned int opsize = pow(2, n); for (int counter = 1; counter < opsize; counter++) { for (int j = 0; j < n; j++) { if (counter & (1<<j)) cout << arr[j] << " "; } cout << endl; } } 声明: if (counter & (1<<j)) 检查 j 的第 counter 位是否已设置。更详细地说,1 << j使用1的移位来生成位掩码,其中仅设置第j位。然后 & 运算符屏蔽 j 的 counter 位;如果结果不为零(这意味着设置了 j 的第 counter 位),则满足条件。 考虑以下示例。如果counter为320,则其二进制表示为101000000,表示第6位(对应于64的值)被设置;让我们测试一下。位掩码是通过移位 1 生成的,其二进制表示形式为 000000001,向右移动 6 位,得到二进制值 001000000。 counter的值,即: 101000000 与 & 组合,即按位与运算符,位掩码如下: 101000000 & 001000000 --------- 001000000 值001000000再次对应于值64;然而,这在这里并不重要,重要的是它不为零(因为它有一个非零位,即我们打算检查的位)。总共条件 if ( 64 ) 很满意。在 C 的语义中(不具有本机布尔数据类型),当使用 if 检查时,任何非零值都被视为 true。 ---首先for循环运行i=0到i<8 .(explanation - https://www.geeksforgeeks.org/power-set/) ---第二次循环运行 i=0 到 i<3 (for {a,b,c}) 1.我们假设第一个循环 i=0 : j=0,1,2 in this case (0 & (1<<0)),(0 & (1<<1)),(0 & (1<<2)) But 0 with & is always 0 so all instance are false for first loop. 让我们考虑第二个循环 i=1 : j=0 int 这种情况 (1 & (1<<0)) it is true so j=0 and arr[0]=a print. j=1,2 为假,因为 ( 1 & (1<<1)) & (1 & (1<<2)) are false. 让我们进行第二个循环 i=2 : j=1,在这种情况下 (2 & (1<<1)) it is true so j=1 and arr[1]=b print. j=0,2 为假,因为 ( 2 & (1<<0)) & (2 & (1<<2)) are false. 让我们考虑第二个循环 i=3 : j=0,2 int 这种情况 (3 & (1<<2)) & (3 & (1<<2)) it is true so j=0,2 and arr[2] =a & c print. j=1 为假,因为 ( 3 & (1<<1)) are false. 让我们考虑第二个循环 i=4 : j=2 int 这种情况 (4 & (1<<2)) it is true so j=2 and arr[2] =c print. j=0,1 为假,因为 ( 4 & (1<<0)) & (4 & (1<<1)) are false. 就这样继续下去...... 语句 if (counter & (1< 其工作原理如下: (1< 计数器 & (1< 如果按位与运算的结果非零,则表示计数器的第 j 位设置为 1。 let counter = 10; // Binary representation: 1010 令 j = 2; if (计数器 & (1 << j)) { console.log(The ${j}-th bit of counter is set.); } 别的 { 控制台.log(The ${j}-th bit of counter is not set.); } - ==========

回答 3 投票 0

反转Python整数的位

给定一个十进制整数(例如 65),如何反转 Python 中的底层位?即以下操作: 65 → 01000001 → 10000010 → 130 看来这个任务可以分解为……

回答 14 投票 0

如何清除最高有效位?

如何将 int 中的最高有效位从 1 更改为 0?例如,我想将 01101 更改为 0101。

回答 8 投票 0

如何将1字节数据转换为2字节数据

我想将1字节的数组元素转换为2字节 例如 arr[大小] = {0x1F}; 所以,我希望 0x1F 将存储在 第二个数组就像, arr_2[大小] = {0x01, 0x0f} 我尝试过像以下方式... 对于(...

回答 4 投票 0

为什么位向量 a = [01101001] 编码集合 A = {0, 3, 5, 6}?

我正在阅读《计算机系统:程序员的视角》,我不明白为什么位向量 a = [01101001] 编码集 A = {0, 3, 5, 6}? 我做了一些谷歌搜索,但没有找到任何有用的东西......

回答 1 投票 0

相当于按位运算的数学方程

我正在阅读的一段C++代码是 整数x = 10; 整数 r = 5; 自动 bb = x << (r & 0x1); where bb reads 20. I understand how bitwise operation works, but I have difficulty to explain its

回答 5 投票 0

快速BCD加法

这个问题的灵感来自于我最近在 Stackoverflow 上遇到的一个问题。它提醒我,在 x86-64 ISA 开发的早期,我曾编写过用于 BCD 加法的 32 位 x86 代码...

回答 1 投票 0

将左移 LSB 位转换为 1

我需要在左移中将LSB 0转换为1: x=5; int num = 0x02;//0b00000010 移位值 = 数字 << x;// 0b01000000 shiftVal should convert to 0b01011111

回答 1 投票 0

如何使用每个玩家的位板在 Connect 4 游戏中查找 7shape?

我正在寻找的形状如下所示: 我有两个位板,代表 Connect 4 游戏中的两个玩家。使用的位是从 0 到 48 的位,因此总共 49 位。代表...

回答 1 投票 0

IEEE 乘法与2 的幂相乘吗?

请确认我对IEEE浮点数的理解。 我相信如果我有两个数字: a = 2^ea × ma ← "数学 ×" b = 2^eb × mb 那么他们的乘积 a * b 与 ((a * ...

回答 1 投票 0

按位检查数字是否为-1

我必须创建一个函数来检查输入数字是否为-1。这是要求 isTmin - 如果 x 是最小值(二进制补码),则返回 1,否则返回 0 法律行动:! 〜&^...

回答 3 投票 0

数据表说EEPROM地址是0xA0,但它在0x50上对我有用。右移位有特殊原因吗?

我使用SFP光收发器模块的EEPROM读取设备数据。该图像显示 EEPROM 的地址是 0xA0,但它对我不起作用。当我输入地址时它起作用了...

回答 1 投票 0

如何使用 C# 在一次操作中翻转位?

我将标志存储在整数中,我想在某些条件下翻转特定位。 条件1 如果第 3 位为真,则 将位 3 设置为 false 将位 2 设置为 true 万一 条件2 如果被咬了...

回答 1 投票 0

有条件使用位运算符

条件运算符如何使用按位运算符表示? 这是一个家庭作业问题,我必须仅使用按位运算来实现条件运算符。这会很简单...

回答 6 投票 0

保证原子性的单比特操作

有没有办法在 C++ 中将单个位设置、清除、测试和翻转作为原子操作?例如“compare_and_swap”的按位变体。

回答 3 投票 0

异或可逆运算问题

我在某处听说使用XOR是不可逆的(他们谈到加密),但我不明白它的意思是什么? AFAIK 即使使用 OR 运算,你也无法找出这两个位中的哪一个...

回答 4 投票 0

选择按位运算序列

是否可以对随机生成的 64 位数字选择一系列按位运算,使得最终结果中的位具有给定的设置概率?我的目标是写一个

回答 1 投票 0

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