如对于51 单片机:
P0=1<<7 P0=a<<7 或 P0=a>>7
执行时,是1次(一条或2条指令)就可以完成,还是至少7次才可以完成,若7次才能完成,这样写岂不亏大了,写着怪简便,执行速度太慢了 还不如写 P0=a*128 P0=a/128呢?乘法除法执行虽然慢,但只需2个机器周期,总比移位7次要快呀!
楼主所考虑的,很正确。
可以观察C程序在编译后,生成的汇编语言,
即可验证楼主的想法:
-------------------
35: main()-------------------
共用了六条汇编指令,才实现 P0 = xx << 3;。
如果是移位 7 次,也许会用反移一次来代替。
楼主自己试试看吧。
C语言不如汇编直接,所以看不出是怎么执行的,编译成汇编语言是什么呢?