找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1594|回复: 8
打印 上一主题 下一主题
收起左侧

如何解释这两个程序相等?

[复制链接]
跳转到指定楼层
楼主
ID:584016 发表于 2019-9-4 20:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么 程序     keyout=0;keyout++;
                keyout=keyout & 0x03;
  和     程序 keyout=0;keyout++;
if(keyout>=4)
{keyout=0;}
是相等的?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:607671 发表于 2019-9-4 23:06 | 只看该作者
结果都是1。建议结合具体的例子打出来
回复

使用道具 举报

板凳
ID:458699 发表于 2019-9-5 00:12 | 只看该作者
第一个是二进制数00000001和二进制数00000011位与,结果是00000001
第二个是判断二进制00000001是否大于等于四,显然是否,所以不进行操作,结果是00000001
所以上面两个是一样的。。。
按程序走一遍就行了
回复

使用道具 举报

地板
ID:463031 发表于 2019-9-5 07:43 | 只看该作者
16进制换成2进制写出来一算就明白了
回复

使用道具 举报

5#
ID:462827 发表于 2019-9-5 09:03 | 只看该作者
相等有什么好奇怪的,还可以写成 keyout=(keyout+1)%4呢,也一样的效果,keyout会在0到3之间逐一变化
回复

使用道具 举报

6#
ID:564356 发表于 2019-9-5 10:11 | 只看该作者
keyout & 0x03与if(keyout>=4) {keyout=0;}效果是一样的,0x03展开二进制00000011
回复

使用道具 举报

7#
ID:564356 发表于 2019-9-5 10:13 | 只看该作者
keyout=keyout & 0x03;
  和  
if(keyout>=4)
{keyout=0;}效果相同,0x03二进制展开00000011
回复

使用道具 举报

8#
ID:212177 发表于 2019-9-5 17:34 来自手机 | 只看该作者
请问各位大佬这两个程序哪个效率高?
回复

使用道具 举报

9#
ID:235200 发表于 2019-9-5 21:04 | 只看该作者
keyout=keyout & 0x03;这一句的意思是只取这个数的低2位,即二进制00 01 10 11变化的情况,对应十进制就是0 1 2 3变化,而if(keyout>=4) {keyout=0;}语句的作用是当keyout计数于4时就归为0,即计数值也是0 1 2 3,所以这两段程序的逻辑是一样的.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表