社区导航

 

搜索
查看: 2062|回复: 4

[讨论] 看一句很简单的 逻辑操作

[复制链接]

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

发表于 2016-11-14 20:27 | 显示全部楼层 |阅读模式
这是今天我一个朋友问我的一小段代码。
我分析了一下,算一个无法一眼看穿的东西,稍微想了一下子,后来觉得这是个挺有意思的小东西,于是发个帖子来这里讨论一下。

东西很简单:
  1. // b取值0~7,代表P0中的位
  2. // 从代码或者函数名字都可以知道,它返
  3. //回的是该位的状态值;
  4. <div class="blockcode"><blockquote>int get_io_state(char b)
  5. {
  6.        return !!(P0 & (1<<b));
  7. }
复制代码



我后来想了想,跟她说,如果是我,我会这样写这个函数
  1. int get_io_state(char b)
  2. {
  3.        return (P0>>bit)&0x01;
  4. }
复制代码



此帖出自编程基础论坛

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

1117

TA的帖子

1

TA的资源

版主

Rank: 6Rank: 6

发表于 2016-11-14 20:41 | 显示全部楼层
你写错了吧

点评

哦,是 b,不是 bit  详情 回复 发表于 2016-11-14 22:10

回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-11-14 22:10 | 显示全部楼层

哦,是 b,不是 bit

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

1299

TA的帖子

4

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2016-11-14 22:29 | 显示全部楼层
思维习惯的问题

第一个例子是用1右移去与原数相“与”  用!!转换成bool

第二个例子是用原数左移 与 1 相“与”  

我比较习惯左移 怎么成了这种习惯 ?

应该是开始学单片机时候,尤其是一些时序图,需要让数据线输出对应的数据,要让IO电平做出相应的变化,而且在数据传输的时候也是低位先传再传高位

点评

很有道理。 对于这类实现,我一贯的想法是: 如何看起来更容易理解,不至于要转个弯才能想到。 但你的一番话让我突然醒悟,原来不同技术背景的人,反应是不一样的。  详情 回复 发表于 2016-11-16 11:51
天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友

回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-11-16 11:51 | 显示全部楼层
ywlzh 发表于 2016-11-14 22:29
思维习惯的问题

第一个例子是用1右移去与原数相“与”  用!!转换成bool

第二个例子是用原数左移  ...

很有道理。
对于这类实现,我一贯的想法是:

如何看起来更容易理解,不至于要转个弯才能想到。

但你的一番话让我突然醒悟,原来不同技术背景的人,反应是不一样的。

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

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

关闭

站长推荐上一条 1/6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-1 05:49 , Processed in 0.195596 second(s), 25 queries , Gzip On, MemCache On.

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