找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于C语句写法的疑问

[复制链接]
跳转到指定楼层
#
各位大神,我是个小白,在其他大神程序里看到这样的写法,有些不太明白,如下图

其中这句TMOD &= ~(1<<6);//Timer1 set As Timer,
中的(1<<6);意思是把01h左移6位,由二进制数0000 0001变为0100 0000,即(1<<6)=16进制40h=0x40


那写成TMOD &= ~0x4写法就比较简单了,不知为什么这位大神却写成这样TMOD &= ~(1<<6);
而且,程序里有        AUXR &= ~0x01;        
                       TMOD &= ~(1<<6);        
                       TMOD &= ~0x30;        
                        AUXR |=  (1<<6);这样的2种写法混合着用,
那究竟用1<<6有什么优点吗?
有知道的大神指点指点!!感谢!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

6#
ID:879809 发表于 2022-2-18 22:10 | 只看该作者
一旦你看懂了,就知道这种写法非常直观容易理解。
回复

使用道具 举报

5#
ID:514901 发表于 2022-2-18 09:20 | 只看该作者
1<<6可以轻松知道对数据的第六位进行操作,但是你写0x40虽然大家也看得懂,但是得在脑海中转化一下吧,看程序时转化几个可能没问题,但多了可能就会烦也容易出错。有大佬说过,当你能像读文章那样轻松阅读一份代码时,不一定是你的编程能力提升了,可能是编写这份代码的人有着深厚的功底!增加程序可读性是非常重要的,所以应该学着养成这种习惯。
回复

使用道具 举报

地板
ID:429003 发表于 2022-2-18 08:30 | 只看该作者
主要是看起来直观,方便后期维护代码时,一眼能明白这么操作的目的。TMOD &= ~(1<<6);  将寄存器TMOD的位BIT6置为零。只是每个人的程序抒写风格问题。
回复

使用道具 举报

板凳
ID:824490 发表于 2022-2-17 09:08 | 只看该作者
1<<6是直接位赋值,意思是把bit6置为“1“,其它位不变,不是楼主你所说的是"移位":
回复

使用道具 举报

沙发
ID:290373 发表于 2022-2-16 20:09 | 只看该作者
1<<6操作的哪一位看起来很直观,如果是一个数值的话还得多想一下拐个弯
回复

使用道具 举报

楼主
ID:311903 发表于 2022-2-16 19:41 | 只看该作者
看着芯片寄存器手册,就很清楚了,配置寄存器哪个位为0或1,两种写法原理都是一样
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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