知道汇编语言里的移位计算吗?a=a<<8;这句编译后,是直接对a的地址中的数据进行移位操作。而b=b*256;汇编后,是先调出b地址中的数据与256相乘,得到的结果存到b地址。谁运行更快显而易见。
8位寄存器:01010101,换算为十进制为85,左移一位操作后为 10101010 = 170,再左移一位操作后为 (1)01010100 = (256) + 84 = 340。最高位的1,被丢弃了,仅仅剩下 84。乘2就不成立了。最高位如果是0,丢弃了,也不影响什么。乘2就成立。