相关疑难解决方法(0)

按位运算和使用

考虑以下代码:

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
Run Code Online (Sandbox Code Playgroud)

我可以理解Python(和其他语言)中的算术运算符,但我从来没有完全理解'按位'运算符.在上面的例子中(来自Python书),我理解左移但不是其他两个.

另外,实际使用的是按位运算符?我很欣赏一些例子.

python binary bit-manipulation operators

94
推荐指数
7
解决办法
14万
查看次数

我在哪里使用JavaScript中的按位运算符?

我读过"什么是按位运算符?" ,所以我知道运算符什么 ,但我还不清楚如何使用它们.任何人都可以提供任何实际的例子,说明位运算符在JavaScript中有用吗?

谢谢.

编辑:

只是深入研究jQuery源代码,我发现了几个使用按位运算符的地方,例如:(只有&运算符)

// Line 2756:
event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));

// Line 2101
var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)

javascript bitwise-operators

69
推荐指数
9
解决办法
3万
查看次数

'x << ~y'在JavaScript中代表什么?

'x << ~y'在JavaScript中代表什么?

我理解按位SHIFT操作执行此操作:

x << y AS x * 2y

而代字号~运算符可以:

~x AS -(x+1)
Run Code Online (Sandbox Code Playgroud)

所以,我假设如下:

5 << ~3 AS 5 * 2-4 or 5 * Math.pow(2, -4)

它应该导致0.3125.

但是,当我运行5 << ~3它时,结果1342177280.

什么是逐步解释?这种操作组合如何以及为什么会导致1342177280而不是0.3125

(这个问题类似于Stack Overflow问题什么是按位运算符?关于按位运算SHIFT符.)

javascript bitwise-operators

55
推荐指数
5
解决办法
3305
查看次数

何时在Web开发期间使用Bitwise Operators?

虽然我掌握了Bitwise Operators的概念,但我不能说在Web开发过程中我遇到了很多用例,我不得不求助于使用Bitwise Operators.

  • 你使用Bitwise运算符吗?
  • 你为什么用它们?
  • 什么是一些示例用例?

请记住,此问题专门用于在Web语言中使用Bitwise Operators.

bit-manipulation

40
推荐指数
5
解决办法
2万
查看次数

什么是(x&1)和(x >> = 1)?

我正在尝试分配:"在不使用sizeof()函数的情况下查找无符号整数数据类型中的位数."

我的设计是将整数转换为位然后计算它们.对于前:10 is 10105 is 101

将整数转换为位表示形式显示如下:

do
{ 
    Vec.push_back( x & 1 ) 
} 
while ( x >>= 1 );
Run Code Online (Sandbox Code Playgroud)

我不想只是复制粘贴的东西.当我使用F-10时,我看到(x & 1)正在做什么,但我不知道它是名字还是它如何完成它的工作(比较一些东西?).我也知道>=哪个"大于或等于"但是什么x >>= 1

注意:标记的副本是JavaScript而不是C++

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

38
推荐指数
4
解决办法
7万
查看次数

如何快速评估零集?

这个最近的代码高尔夫职位询问了C中快速实现的可能性(假设n是无符号整数):

if (n==6 || n==8 || n==10 || n==12 || n==14 || n==16 || n==18 || n==20)

一种可能的简化是观察数字a[]={6,8,10,12,14,16,18,20}形成算术级数,因此改变范围然后使用一些按位技巧

if (((n - 6) & 14) + 6 == n)

正如John Bollinger 所回答的那样,实现了更短(可能确实更有效)的实现.

现在我问的是什么是类似优雅(并且希望同样有效)的实现

if (n==3 || n==5 || n==11 || n==29 || n==83 || n==245 || n==731 || n==2189)

提示:这次数字a[k]形成几何级数:a[k]=2+3^k.

我想在一般情况下,不能比排序数字更好a[k],然后进行对数搜索以测试是否n是排序数组的成员.

c c++ sorting performance search

22
推荐指数
3
解决办法
1852
查看次数

18
推荐指数
2
解决办法
2万
查看次数

什么是| 和^运算符用于?

可能重复:
什么是按位运算符?

最近我遇到了一些使用|的样本 和^运算符.我猜这些是 ornegation运营商.

那么这些运营商究竟代表什么呢?

.net c# operators

13
推荐指数
3
解决办法
2001
查看次数

这些JavaScript按位运算符有什么作用?

  • x <<= y (x = x << y)
  • x >>= y (x = x >> y)
  • x >>>= y (x = x >>> y)
  • x &= y (x = x & y)
  • x ^= y (x = x ^ y)
  • x |= y (x = x | y)

这些不同的运营商做了什么?

javascript bit-manipulation operators

9
推荐指数
3
解决办法
2701
查看次数

"^ ="运算符在此查找非配对数字算法中做了什么?

看到一段有趣的代码,在重复数字列表中找到一个孤独的数字(列表中的每个数字除了一个之外都会出现两次).

function findNonPaired(listOfNumbers) {
  let nonPairedNumber = 0

  listOfNumbers.forEach((n) => {
      nonPairedNumber ^= n
  })

  return nonPairedNumber
}

const x = [1,5,4,3,9,2,3,1,4,5,9]
console.log(findNonPaired(x))
Run Code Online (Sandbox Code Playgroud)

这个解决方案看起来非常优雅,但我很好奇^=操作员在这里做了什么?

javascript bit-manipulation bitwise-operators

8
推荐指数
1
解决办法
803
查看次数