【问题标题】:C operator "<<"C 运算符“<<”
【发布时间】:2013-10-23 21:09:53
【问题描述】:

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

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

&lt;&lt;4 是什么意思?

【问题讨论】:

  • Google for shift operator in c
  • @EugenRieck - 虽然您可能很明显这是一个班次运算符,但 OP 可能不知道这一点,因此无法通过谷歌搜索它。话虽如此,我为“en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
  • 它看起来不像伪代码。它看起来像 C.:)
  • 如果你真的想笑,请将@DigitalTrauma 的非常好的观察延伸到我刚开始时可能已经搜索过的一些东西(如果当时有谷歌的话),即“C operator 附加到任何这些搜索中:)
  • 我的评论是为了有帮助而不是贬义!我实际上 ment “如果你在谷歌上搜索'C 中的移位运算符',你会得到答案”。英语不是我的母语,如果我听起来很粗鲁,我很抱歉。再说一遍:我不是故意的。

标签: c pseudocode


【解决方案1】:

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

'A' = 65 = 0100 0001

左移4次是

0100 0001 0000

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

【讨论】:

    【解决方案2】:

    这意味着对数字的二进制表示进行 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

    【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 嗯,乘以 2-to-the-n 怎么样? (或除以 2 到 n 表示 >>)。
    • 移位运算符非常常见和有用。
    • 应该停在:...是左移。。一般来说,我发现 generally 在这个论坛上很难使用 :)
    【解决方案4】:
    如果我没记错的话,

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

    【讨论】:

      【解决方案5】:

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

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

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

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

      为什么要乘以 16 或 Convert a hexadecimal string to an integer efficiently in C?

      【讨论】:

        【解决方案6】:

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

        1 1 1 1 1

        等等。

        【讨论】:

          猜你喜欢
          • 2012-11-26
          • 2021-09-02
          • 2011-06-15
          • 1970-01-01
          • 1970-01-01
          • 2017-03-29
          • 2016-02-19
          • 1970-01-01
          相关资源
          最近更新 更多