标题:
关于C语句写法的疑问
[打印本页]
作者:
温柔的郎
时间:
2022-2-16 17:22
标题:
关于C语句写法的疑问
各位大神,我是个小白,在其他大神程序里看到这样的写法,有些不太明白,如下图
51hei截图_20220216164707.png
(11.62 KB, 下载次数: 53)
下载附件
2022-2-16 16:51 上传
其中这句
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有什么优点吗?
有知道的大神指点指点!!感谢!!
作者:
xws245925587
时间:
2022-2-16 19:41
看着芯片寄存器手册,就很清楚了,配置寄存器哪个位为0或1,两种写法原理都是一样
作者:
田贺
时间:
2022-2-16 20:09
1<<6操作的哪一位看起来很直观,如果是一个数值的话还得多想一下拐个弯
作者:
名字不是重点
时间:
2022-2-17 09:08
1<<6是直接位赋值,意思是把bit6置为“1“,其它位不变,不是楼主你所说的是"移位":
作者:
xstong
时间:
2022-2-18 08:30
主要是看起来直观,方便后期维护代码时,一眼能明白这么操作的目的。TMOD &= ~(1<<6); 将寄存器TMOD的位BIT6置为零。只是每个人的程序抒写风格问题。
作者:
郑汉松
时间:
2022-2-18 09:20
1<<6可以轻松知道对数据的第六位进行操作,但是你写0x40虽然大家也看得懂,但是得在脑海中转化一下吧,看程序时转化几个可能没问题,但多了可能就会烦也容易出错。有大佬说过,当你能像读文章那样轻松阅读一份代码时,不一定是你的编程能力提升了,可能是编写这份代码的人有着深厚的功底!增加程序可读性是非常重要的,所以应该学着养成这种习惯。
作者:
rundstedt
时间:
2022-2-18 22:10
一旦你看懂了,就知道这种写法非常直观容易理解。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1