Page2
当5位右移2位为1时10右移2位是2然后加上3将是正确的?怎么打印0即使调试我也无法理解。
答案 0 :(得分:6)
JavaDocs中提供的此表将帮助您了解Java中的操作符优先级
additive + - /\ High Precedence
||
shift << >> >>> || Lower Precedence
所以你的表达将是
a >> 2 + b >> 2;
a >> 12 >> 2; // hence 0
答案 1 :(得分:2)
关于operator precedence的全部内容。加法运算符优先于移位运算符。
您的表达方式与:
相同$groupsql="SELECT id, title FROM " . TABLE_PREFIX . "thegroup WHERE";
$first=true;
foreach($group_ids as $value){
if(!$first){
$groupsql = $groupsql." OR ";
}else{
$first = false;
}
$groupsql = $groupsql." id = '".$value."' ORDER BY groupid ASC";
}
答案 2 :(得分:1)
这是你想要的吗?
int c = ((a >> 2) + b) >> 2;
你正在向2 + b移动到右边。我假设你想把5个位置移位2个,对吗?
b000101 >> 2 == b0001øø
| |___________________|_|
| |
|_____________________|
即。最左边的位向右移动2个位置,最右边的位也移动(但是在右侧没有更多的有效位置,所以它就会消失)并且数字变为剩下的 - 在这种情况下为“1”。如果您将数字5移动12个位置,您将得到零,因为5的二进制形式少于12个位置。在'5'的情况下,如果要保留非零值,最多可以移动2个位置。