1

正在浏览特定设备的文档(伪代码)。在某一时刻,它有:

int b0 = charToInt(*something*)
int Data;
Data = (b0<<4);

是什么<<4意思?

4

6 回答 6

1

这意味着对数字的二进制表示进行 4 次左移。

二进制数 4 = 0000 0100。

将位模式左移四次给我们 0100 0000

4 << 0 = 0000 0100 (what we start with)
4 << 1 = 0000 1000 (8)
4 << 2 = 0001 0000 (16)
4 << 3 = 0010 0000 (32)
4 << 4 = 0100 0000 (64)

0100 0000 = 64

于 2013-10-15T21:55:59.187 回答
1

它是一个左移运算符,可以这样使用:
要生成 2 的幂,请使用以下命令:

1 << 0 == 1
1 << 1 == 2
1 << 2 == 4
1 << 3 == 8
1 << 4 == 16

等等。

于 2013-10-15T22:03:08.573 回答
0

向左位移 4 位,所以如果b0是 'A' 它会是

'A' = 65 = 0100 0001

位左移 4 次是

0100 0001 0000

注意:忽略你可能有也可能没有的字节交换

于 2013-10-15T21:55:50.670 回答
0

<< 如果我没记错的话,这是一个有点操作。它所做的是将 b0 的位值移动到四个位置。所以如果 b0 = 00000101 b0 << 4 = 01010000

我不使用按位运算符,所以我不能真正告诉你它们有什么用,但希望这会有所帮助!

于 2013-10-15T21:58:04.747 回答
0

正如其他答案所提到的,这会向左移动 4 位。位移可用于快速乘以或除以 2 的幂。 http://en.wikipedia.org/wiki/Bitwise_shift#Bit_shifts

  • 向左的每个位移有效地乘以 2(注意溢出和有符号整数)。
  • 向右的每个位移有效地除以 2。

所以在这种情况下,你正在做:

  • 左移 4 位,或
  • 乘以 2 四次,或
  • 乘以(2 的 4 次方),或
  • 乘以 16。

为什么要乘以 16 或 <<4?有很多原因,但一种可能性立即浮现在脑海 - 将数字的十六进制字符串表示形式转换为数字本身。 在C中有效地将十六进制字符串转换为整数?

于 2013-10-15T22:00:58.263 回答
-2

<< 运算符是按位移位。那个特殊的是左移。

通常这些用于压缩算法,实际上不存在其他任何实际用途,除了像图像像素设置这样的明确区域。

于 2013-10-15T21:56:57.487 回答