找回密码
 立即注册

QQ登录

只需一步,快速开始

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

C语言程序 if((Key_Temp&0xf0)^0xf0) 求大家指导,不理解

[复制链接]
跳转到指定楼层
楼主
ID:734017 发表于 2020-4-20 23:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
unsigned char Key_Scan(void)
{
   uchar Key_Temp,Scan_Code,Temp_Code;
   P2 = 0XF0;
   Key_Temp = P2;
   if((Key_Temp&0xf0)^0xf0)   



后面的没写,最后一句为什么等价于 if((Key_Temp&0xf0)!=0xf0)   
   
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:70069 发表于 2020-4-21 08:13 | 只看该作者
Key_Temp先和0xfo与,取高四位,然后再同0Xfo异或。
例Key_Temp=0xB3
就是10110011&11110000=10110000
然后10110000^11110000=01000000
如果Key_Temp=oxf3
11110011&11110000=11110000
11110000^11110000=00000000
异或就是如果相等输出为0,
如果不相等,就输出按位异或后的结果。也就是非0.
回复

使用道具 举报

板凳
ID:584814 发表于 2020-4-21 09:15 | 只看该作者
相等的数异或值为0,貌似与你那个所谓的等价于正好反过来。
回复

使用道具 举报

地板
ID:734017 发表于 2020-4-21 09:34 | 只看该作者
benclee 发表于 2020-4-21 08:13
Key_Temp先和0xfo与,取高四位,然后再同0Xfo异或。
例Key_Temp=0xB3
就是10110011&11110000=10110000

是不是,非0判断为假,if不执行
回复

使用道具 举报

5#
ID:282850 发表于 2020-4-21 09:59 | 只看该作者
楼上说的很详细。异或是跟1异反转,跟0异不变。
Key_Temp&0xf0取高4位,^0xf0后,相当于找出高4位中是否有哪位不为1。故与!=0xf0是相同的。
回复

使用道具 举报

6#
ID:70069 发表于 2020-4-21 10:32 | 只看该作者
0为假,非0为真。就是如果相同输出为0,不执行。
如果输出为非0,也就是不相同,执行。(相当于!=)
回复

使用道具 举报

7#
ID:734017 发表于 2020-4-21 11:32 | 只看该作者
感谢大家
回复

使用道具 举报

8#
ID:734017 发表于 2020-4-21 11:49 | 只看该作者
感谢大家
回复

使用道具 举报

9#
ID:389856 发表于 2020-4-21 15:10 | 只看该作者
异或是两个数相同为0,不同为1,可以和不等于等价。判断的都是两个数的每一位相不相等
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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