标签: bitwise-operators

将int转换为C中的float(无转换)

如何将int转换为float(返回为无符号,但解释为float)?我不能使用任何高级语言结构,如联合,只有按位操作,控制逻辑(if/while),+和 - 等.

c floating-point int bitwise-operators

0
推荐指数
1
解决办法
1万
查看次数

我该怎么做 - 两个快速的mod功率就像一个快速的++功率?

我保持一个索引计数器,应该像圆形数组一样.我强制大小为2的幂,因此用于size_t MASK = size_ - 1在遍历时替换模数:

index_ = (++index_) & MASK;
Run Code Online (Sandbox Code Playgroud)

但问题是,在我的情况下,我有时会意识到我可以重用我下次在这里发布的那个索引,所以当发生这种情况时我会有这样的事情:

if (canReuseLastUsedIndex())
    --index_;
Run Code Online (Sandbox Code Playgroud)

但是当最后一次抛出index_是零时,这会崩溃,因为这不会缠绕到size_(即MASK+1).有这种方法可以让这种情况发生吗?还是什么东西很快?(即,优选不具有地说:if (index_) --index_; else index_ = size_)

c++ optimization performance bit-manipulation bitwise-operators

0
推荐指数
1
解决办法
179
查看次数

如何计算存储N位所需的long(64位)数?

好吧,我可以通过逻辑做到这一点,但我打赌有一个数学运算或表达式来做到这一点.有人存在吗?如果是,那是什么?

这是算法:

private int calcNumberOfLongs(int size) {
    if (size % 64 == 0) {
        return size / 64;
    } else {
        return size / 64 + 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

让我清楚我想要的东西:

对于150位,我需要三个64位长.两个当然只给我128位.这是第一次计算.

第二个计算,这一个更重要,因为它将一直执行,是从位位置变为长位.例如:

bit 5 -> first long
bit 64 -> first long
bit 65 -> second long
bit 140 -> third long
Run Code Online (Sandbox Code Playgroud)

获取此信息的数学表达式和/或按位运算是什么?


好的,从下面的答案来看,它似乎是从位位置变长,我们只是使用:

多头头寸=比特头寸/ 64

延续在这里:如何在2的幂时将除法变为按位移位?

java algorithm bit-manipulation bitwise-operators

0
推荐指数
1
解决办法
130
查看次数

是否可以重载索引operator []以从整数返回位?

我不确定这是否可行,因为据我所知,引用不能引用整数中的各个位,但我很想知道是否有一种技术可以实现以下效果.

int z = 0x1234;
z[0] = 1; //set the most significant bit of z.
uint8_t bit = z[30] //get the index 30 bit of z, counting from the left.
Run Code Online (Sandbox Code Playgroud)

如果我不能z[0] = 1,我想知道是否至少可以使用重载操作提取位.

c++ operator-overloading operators bitwise-operators

0
推荐指数
1
解决办法
105
查看次数

如何在Python中进行按位NOR门(编辑python数学为我工作)

说我写这个:

a=01100001 
b=01100010 
c=01100011 
d=01100100 
e=01100101 
Run Code Online (Sandbox Code Playgroud)

现在,每个字母都与给定的数字类似,我将如何处理相似的值:

Python会想要这样做:

a + b = 2200011
Run Code Online (Sandbox Code Playgroud)

但我想要它做的就是这个

  • 如果尝试将0和0加在一起,则显示1
  • 如果尝试将1和0加在一起,则显示0
  • 如果尝试将0和1加在一起,则显示0
  • 如果尝试将1和1加在一起,则显示0

我想做的是 a + b = 10011100

有没有办法在这个实例中编辑python算出数学的方式?

到目前为止,我已经给出了设置值来表示字母,但我想做的是改变python给我结果的方式来匹配上面的解释中的XOR门

所以任何人都可以给出代码的例子来给出设定值(1 + 1 = 0)(0 + 0 = 1)...例如

python bit-manipulation bitwise-operators

0
推荐指数
1
解决办法
4767
查看次数

二元OR运算符

你好我有两个号码

int a= 6;
int b = 20;
Run Code Online (Sandbox Code Playgroud)

当我在做orie |操作时,它没有给出正确的结果.

int result = a | b ;
Run Code Online (Sandbox Code Playgroud)

result = 22但正确的答案是26.

java bitwise-operators operator-keyword

0
推荐指数
1
解决办法
892
查看次数

下面的代码返回给定数字是否为2的幂.它是如何工作的?

我可以理解它使用逐位AND运算符,但它是如何工作的?

public static void main(String[] args) {
  Scanner sc = new Scanner(System.in); 
  long num1=sc.nextLong();
  long count=(num1 & (num1- 1));
  if(count == 0l) {
    System.out.println("power of two");
  }
}
Run Code Online (Sandbox Code Playgroud)

java bitwise-operators

0
推荐指数
1
解决办法
52
查看次数

16位的按位AND(或TEST)如何测试第5位?

在我的学院关于8086 Assembly的文档中有以下示例:

TEST AL, 16      ; tests the 5th bit's state
Run Code Online (Sandbox Code Playgroud)

考虑到TEST指令的作用,这一点是否正确?它根据标记设置标记AL & 16.那怎么测试第5位?

注意:之前没有提到AL的值,正好在这里显示的内容,所以我认为这必须适用于一般情况.

x86 assembly bitwise-operators x86-16

0
推荐指数
1
解决办法
238
查看次数

具有运算符优先级的宏功能是否显示异常结果?

#define SQUARE(x,y) (x<y?x:y)
   int a = 5, b = 6, c = 3;
    int var = SQUARE(a & c,b);
Run Code Online (Sandbox Code Playgroud)

我搜索并了解到'''在'&'之前.根据规则它应该给'5'.但它输出为'1'.但在某些情况下,它会提供正确的输出.你能解释一下宏观规则以及我在这里缺少什么.

c bitwise-operators

0
推荐指数
1
解决办法
135
查看次数

为什么if(-8&7)返回false

当我尝试运行以下代码时,它显示“ FALSE”而不是“ TRUE”。有人可以解释为什么代码返回false吗?

#include <stdio.h>

int main(void)
{
    if(-8 & 7)
    {
        printf("TRUE");
    }
    else
    {
        printf("FALSE");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c bitwise-operators bitwise-and

0
推荐指数
1
解决办法
60
查看次数