标签: bit-shift

什么是按位移位(位移)运算符以及它们如何工作?

我一直在尝试在业余时间学习C语言,其他语言(C#,Java等)具有相同的概念(通常是相同的运算符)......

我想知道是,在核心层,是什么位移(<<,>>,>>>)这样做,可以帮助它什么问题解决,和周围的弯曲什么潜伏的陷阱?换句话说,一个绝对的初学者指导比特移位的所有优点.

bit-manipulation binary-operators operators bit-shift

1340
推荐指数
9
解决办法
67万
查看次数

什么是C中的>>> =运算符?

由同事作为一个谜题,我无法弄清楚这个C程序实际上是如何编译和运行的.什么是这个>>>=运算符和奇怪的1P1文字?我在Clang和GCC进行了测试.没有警告,输出是"???"

#include <stdio.h>

int main()
{
    int a[2]={ 10, 1 };

    while( a[ 0xFULL?'\0':-1:>>>=a<:!!0X.1P1 ] )
        printf("?");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c obfuscation bit-shift literals digraphs

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

使用C中的移位运算符的乘法和除法实际上更快吗?

例如,可以使用位运算符来实现乘法和除法

i*2 = i<<1
i*3 = (i<<1) + i;
i*10 = (i<<3) + (i<<1)
Run Code Online (Sandbox Code Playgroud)

等等.

实际上使用say (i<<3)+(i<<1)乘以10比i*10直接使用更快吗?是否有任何类型的输入不能以这种方式倍增或分割?

c c++ bit-shift multiplication division

282
推荐指数
8
解决办法
9万
查看次数

这怎么打印"你好世界"?

我发现这个怪异:

for (long l = 4946144450195624l; l > 0; l >>= 5)
    System.out.print((char) (((l & 31 | 64) % 95) + 32));
Run Code Online (Sandbox Code Playgroud)

输出:

hello world
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?

java string bit-shift

163
推荐指数
6
解决办法
6499
查看次数

对于Python 3.x整数,时间比比特移位快两倍?

我正在查看sorted_containers的来源,并惊讶地看到这一行:

self._load, self._twice, self._half = load, load * 2, load >> 1
Run Code Online (Sandbox Code Playgroud)

load是一个整数.为什么在一个地方使用位移,在另一个地方使用乘法?似乎合理的是,位移可能比积分除以2更快,但为什么不用乘法替换乘法呢?我对以下案例进行了基准测试:

  1. (次,分)
  2. (轮班,轮班)
  3. (次,班次)
  4. (转移,分裂)

并发现#3始终比其他替代品更快:

# self._load, self._twice, self._half = load, load * 2, load >> 1

import random
import timeit
import pandas as pd

x = random.randint(10 ** 3, 10 ** 6)

def test_naive():
    a, b, c = x, 2 * x, x // 2

def test_shift():
    a, b, c = x, x << 1, x >> 1    

def test_mixed(): …
Run Code Online (Sandbox Code Playgroud)

python performance bit-shift python-3.x integer-arithmetic

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

什么是JavaScript >>>运算符以及如何使用它?

我正在查看Mozilla的代码,它为Array添加了一个过滤方法,它有一行代码让我很困惑.

var len = this.length >>> 0;
Run Code Online (Sandbox Code Playgroud)

我以前从未见过用于JavaScript的>>>.
它是什么,它做了什么?

javascript operators bit-shift

141
推荐指数
6
解决办法
3万
查看次数

轮班操作员如何在Java中工作?

我试图了解班次运营商,并没有得到太多.当我尝试执行以下代码时

System.out.println(Integer.toBinaryString(2 << 11));
System.out.println(Integer.toBinaryString(2 << 22));
System.out.println(Integer.toBinaryString(2 << 33));
System.out.println(Integer.toBinaryString(2 << 44));
System.out.println(Integer.toBinaryString(2 << 55));
Run Code Online (Sandbox Code Playgroud)

我得到以下内容

1000000000000    
100000000000000000000000    
100    
10000000000000    
1000000000000000000000000    
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

java bit-shift

140
推荐指数
5
解决办法
22万
查看次数

120
推荐指数
7
解决办法
22万
查看次数

您是否曾经不得不在实际项目中使用位移?

您是否曾经在实际编程项目中使用位移?大多数(如果不是全部)高级语言都有移位运算符,但什么时候你真的需要使用它们?

bit-manipulation bit-shift

79
推荐指数
8
解决办法
3万
查看次数

Java:检查长度为0或1

您将使用什么方法来确定表示2 ^ x的位是1还是0?

java bit-shift long-integer

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