请解释在不同情况下执行的BIT明智操作的顺序。
(gdb) set $i = 1
(gdb) p $i << 1 + ($i << 3)
$11 = 512
(gdb) set $i = 1
(gdb) p ($i << 1) + $i << 3
$12 = 24
(gdb) set $i = 1
(gdb) p $i << 1 + $i << 3
$13 = 32
(gdb)
答案 0 :(得分:1)
我将解释一个案例并将剩余部分留给您。
(gdb) p $i << 1 + ($i << 3)
$11 = 512
在这一行,从右到左阅读,$i
最初为1(二进制为0001),左移<<
为3位,由于括号,我们有1000
,然后添加1以获取1001
,即9。下一个<<
表示从初始9
开始移位$i
位,我们有2^9 = 512
。这是您在下一行中看到的结果。
请注意原始$i
未被修改,您需要遵循优先权。