【问题标题】:shift left with 1's behind? C language在 1 的后面左移? C语言
【发布时间】:2014-03-18 20:33:31
【问题描述】:

我想知道这是否可能......

我知道 255 = 11111111,如果我做 255

我想知道是否可以在不左移的情况下获得值 1111111111111111 while 或 for 做一个 cicle。

谢谢。

【问题讨论】:

  • 不,你不能单独用左移来做到这一点。不过,我不能告诉你解决方案是什么,因为你还没有解释一般规则是什么。如果输入不同,比如10011010,该怎么办?
  • 要获得“值 1111111111111111 左移而不执行循环 while 或 for”:0xFFFF << 0。但就像@Oli 所说,需要更多信息来创建一般规则。

标签: c binary shift


【解决方案1】:
int output = (input << shift) | ((1 << shift) - 1);

【讨论】:

  • ((input + 1) &lt;&lt; shift) - 1 可能与此等价。如果 OP 对 | 的使用感觉不好,kek
  • @DRS 因为你打错了? (val &lt;&lt; (pos * 8)) | ((1 &lt;&lt; (pos * 8)) - 1)val=255pos=1 给出了您在问题中要求的结果,即 65535 aka 1111111111111111。这个答案是正确的。
猜你喜欢
  • 2022-11-03
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多