在单片机的C语言中,temp=temp<<1,是左移一位,最低位补零,还是左移一位,最高位补到最低位?

如题所述

这跟你的编译器有关吧,如果是keil c51 应该是是左移一位,最低位补零。具体你可以反汇编看一下。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-23
据我所知, 几种C/C++编译器, <<左移,都是最低位补零, 这不会有二义性.

几种C/C++编译器只是在对有符号数 位右移>> 倒是有区别.
第2个回答  2021-07-23
其实不是这样的,这个应该是循环移位, 我定义一个无符号整型变量A的时候就发现了这个问题,系统给它分配值0xff, 这个时候无法你移多少位,结果还是0xff,移出去的位填回低位或高位了。
第3个回答  2010-09-23
补0。