直接对一个数左移n位再赋值,是低位对应赋值吗?
如ADC0CF = ((SYSCLK / 3000000) - 1) << 3;ADC0CF是8位寄存器,SYSCLK=24M
不太清楚((SYSCLK / 3000000) - 1)是以什么格式存储的,8位还是int? 8位机,int是8bit。左移是去掉高位,空出低位。 左移的意思是将数据转换成2进制,之后所有数据向左移动,最右边补0
比如01010001左移1位就是10100010
如果是左移2位,就出现了循环移位和不循环的问题,
于是就有01000100和01000101的区别了 ((SYSCLK / 3000000) - 1) << 3 是编译器在编译当中已经计算好了的值,存储在rom中,单片机在执行语句的时候从ROM中取出这个值写入指定的地址。
页:
[1]