打印

好好看下,这段程序,你们觉得有没有不对的地方

[复制链接]
1334|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小营七郎|  楼主 | 2013-6-12 23:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DMA, rc, IDMA, DM, AI

uchar cnt=0;
   void main()
   {

  。。。。。
   P5OUT&=~(1<<cnt);
   cnt++;
   if(cnt==6) cnt=0;
     。。。。。
   }


cnt开始=0,~(1<<cnt)=0x1111 1111 1111 1111 1110
cnt=0x01,    ~(1<<cnt)=0b1111  1111  1111  1101
cnt=0x02,    ~(1<<cnt)=0b1111  1111  1111  1011
cnt=0x03,    ~(1<<cnt)=0b1111  1111    1111       0111
cnt=0x04,    ~(1<<cnt)=0b1111  1111     1110          1111

cnt=0x05    ~(1<<cnt)=0b111 1         111 1            1101                 1111为什么会是这样?


cnt=0x0000 0110          (1<<cnt)=0000  1100            ~(1<<cnt)=1111 0011  为什么不是这样的?


相关帖子

沙发
airwill| | 2013-6-13 12:16 | 只看该作者
cnt=0x0000 0110          (1<<cnt)=0100  0000

cnt=0x0000 0110          (cnt<<1)=0000  1100

这不应该有疑问嘛.

使用特权

评论回复
板凳
hwk612167| | 2013-6-13 12:52 | 只看该作者
对结果没有影响

使用特权

评论回复
地板
小营七郎|  楼主 | 2013-6-13 14:54 | 只看该作者
airwill 发表于 2013-6-13 12:16
cnt=0x0000 0110          (1

我懂了,符号左边是要移位的对象,右边是要移几位。
:lol

使用特权

评论回复
5
lzbf| | 2013-6-13 18:48 | 只看该作者
你要做简单移位 至于这么麻烦的。

使用特权

评论回复
6
小营七郎|  楼主 | 2013-6-14 11:54 | 只看该作者
lzbf 发表于 2013-6-13 18:48
你要做简单移位 至于这么麻烦的。

那你怎么移的?

使用特权

评论回复
7
hawksabre| | 2013-6-14 19:18 | 只看该作者
感觉程序写的不是很规范   应该有隐藏的bug

使用特权

评论回复
8
diweo| | 2013-6-15 16:54 | 只看该作者
本帖最后由 diweo 于 2013-6-15 16:58 编辑

大体上,左移一位就是乘以2,右移一位就是除以2。
最常见的是用1来移位,当然换别的数也一样的道理,只要注意一下溢出就行了。

使用特权

评论回复
9
firstblood| | 2013-6-17 22:30 | 只看该作者
这个程序的也没什么问题的,编译的时候是可以通过的

使用特权

评论回复
10
vivilzb1985| | 2013-6-19 22:06 | 只看该作者
感觉这还是蛮复杂的,特别是你这移位操作的使用的

使用特权

评论回复
11
vivilzb1985| | 2013-6-19 22:06 | 只看该作者
不过看看楼上各位的解析的,我整明白了一些的

使用特权

评论回复
12
u880| | 2013-6-23 23:37 | 只看该作者
米发现什么啊

使用特权

评论回复
13
huigoushang| | 2013-6-23 23:57 | 只看该作者
进来学习的

使用特权

评论回复
14
G21372| | 2013-6-24 00:22 | 只看该作者
原来是这样的

使用特权

评论回复
15
yangguangaisha| | 2013-6-24 00:43 | 只看该作者
对结果应该没有影响吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

94

主题

1813

帖子

3

粉丝