正在浏览特定设备的文档(伪代码)。在某一时刻,它有:
int b0 = charToInt(*something*)
int Data;
Data = (b0<<4);
是什么<<4
意思?
正在浏览特定设备的文档(伪代码)。在某一时刻,它有:
int b0 = charToInt(*something*)
int Data;
Data = (b0<<4);
是什么<<4
意思?
这意味着对数字的二进制表示进行 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
它是一个左移运算符,可以这样使用:
要生成 2 的幂,请使用以下命令:
1 << 0 == 1
1 << 1 == 2
1 << 2 == 4
1 << 3 == 8
1 << 4 == 16
等等。
向左位移 4 位,所以如果b0
是 'A' 它会是
'A' = 65 = 0100 0001
位左移 4 次是
0100 0001 0000
注意:忽略你可能有也可能没有的字节交换
<< 如果我没记错的话,这是一个有点操作。它所做的是将 b0 的位值移动到四个位置。所以如果 b0 = 00000101 b0 << 4 = 01010000
我不使用按位运算符,所以我不能真正告诉你它们有什么用,但希望这会有所帮助!
正如其他答案所提到的,这会向左移动 4 位。位移可用于快速乘以或除以 2 的幂。 http://en.wikipedia.org/wiki/Bitwise_shift#Bit_shifts
所以在这种情况下,你正在做:
为什么要乘以 16 或 <<4?有很多原因,但一种可能性立即浮现在脑海 - 将数字的十六进制字符串表示形式转换为数字本身。 在C中有效地将十六进制字符串转换为整数?
<< 运算符是按位移位。那个特殊的是左移。
通常这些用于压缩算法,实际上不存在其他任何实际用途,除了像图像像素设置这样的明确区域。