标签: bit-manipulation

在像C++这样的语言中,(a ^(1 << b))实际上做了什么?

我正在看这个功能,

int func(int a, int b){
    return (a ^ (1 << b)); 
}
Run Code Online (Sandbox Code Playgroud)

究竟发生了什么?据我所知,它基本上是说"XOR(2 ^ b)",也就是说,是b的幂的xor 2.但除此之外,实际发生了什么,为什么?我想我正在寻找这个公式中的某种模式.

c c++ java bit-manipulation bitwise-operators

-5
推荐指数
1
解决办法
77
查看次数

理解C中按位运算符的问题

x是任何十进制数。这个表达是什么意思?

return ( (x & 0x0000FFFF)<<16 | (x & 0xFFFF0000)>>16 );
Run Code Online (Sandbox Code Playgroud)

bit-manipulation

-6
推荐指数
1
解决办法
704
查看次数

在比特操作中使用时到底做了什么?

有什么区别~iINT_MAX^i 两者给出相同的没有.在二进制,但当我们打印否.输出不同,如下面的代码所示

#include <bits/stdc++.h>
using namespace std;
void binary(int x)
{
int i=30;
while(i>=0)
{
    if(x&(1<<i))
      cout<<'1';
    else
      cout<<'0';
    i--;  
}
cout<<endl;
}
int main() {
  int i=31;
  int j=INT_MAX;
  int k=j^i;
  int g=~i;
  binary(j);
  binary(i);
  binary(k);
  binary(g);
  cout<<k<<endl<<g;
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

我把输出作为

1111111111111111111111111111111
0000000000000000000000000011111
1111111111111111111111111100000
1111111111111111111111111100000  
2147483616
-32
Run Code Online (Sandbox Code Playgroud)

为什么k和g不同?

c++ bit-manipulation bit-shift bitwise-operators bitwise-xor

-11
推荐指数
1
解决办法
126
查看次数

为什么“ -10&5”的结果等于4?当按位AND应用于负数时会发生什么?

我已经编写并编译了以下代码:

void main()
{ 
    printf("%d", -10 & 5);
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它输出值4。为什么该程序的输出为4?

c bit-manipulation operators bitwise-operators negative-number

-11
推荐指数
1
解决办法
140
查看次数

检查数字是否可以被二的幂整除

找出 2 的最大幂x,一个 64 位整数,或返回 -1。
零情况未定义,因为它是 2 的任何幂,因此您的方法可以返回任何数字。

我尝试BigInteger.getLowestSetBit()为此使用,它返回正确的答案,但远非最佳。

示例:输入 -> 输出

  • 3 -> -1
  • 6 -> 1
  • 4256 -> 5

java algorithm bit-manipulation

-14
推荐指数
1
解决办法
191
查看次数