你是否曾经在实际编程项目中使用过 位移操作?大多数(如果不是全部)高级语言都有这种操作符,但是什么情况下才需要使用它们呢?
for(var i = 0; i < getSku.arguments.length; i++)
{
index = getAttributeIndex(i, getSku.arguments[i]);
hash += (index+1) << (4*i);
}
这比每次循环可能有数百个 SKU 并比较每次最多 5 个值要快得多。
是的,一直都有。比如这些用于将三维坐标打包/解包为32位整数的宏:
#define Top_Code(a, b, c) ((((a) + x) << 20) | (((b) + y) << 10) | ((c) + z))
#define From_Top_Code(a, b, c, f) (a = (((f) >>> 20) - x), b = ((((f) & 0xffc00) >>> 10) - y), c = (((f) & 0x3ff) - z))