Jac*_*ith 12 c++ bit-manipulation
简单的问题,但我似乎无法弄清楚:
如果我有一个整数,比如12,我对它执行以下位操作:
int i = 12;
i = (i << 3) + (i << 1);
我最终以120(12*10)结束.这是任何数字的情况.
有人可以简洁地向我解释为什么这有效吗?(当涉及到变速时,我显然遗漏了一些相当简陋的东西).
谢谢
Pup*_*ppy 21
表达为乘法.
i = (i << 3) + (i << 1);
i = (i * 8) + (i * 2);
i = 8i + 2i
i = 10i
Run Code Online (Sandbox Code Playgroud)
i << 3相当于i * 8. i << 1相当于i * 2.
分布属性告诉我们:
x = i * 10
x = i * (8 + 2)
x = 8i + 2i
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6048 次 |
| 最近记录: |