C语言中的(uint32)1<<10 是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中的(uint32)1<<10 是啥意思?相关的知识,希望对你有一定的参考价值。
谢谢Jseven_jy等各位。象以下这种宏定义有什么优势之处?
#define xxxCLK (uint32)1<<10
#define xxxDOUT (uint32)1<<6
C语言中的(uint32)1<<10意思无符号32位整型量 1,向左移10位。
c语言中uint是共用体类型结构,在结构中各成员有各自的内存空间,一个结构体变量的总长度大于等于各成员长度之和。而在“联合”中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。
联合类型的定义和联合变量的说明:一个联合类型必须经过定义之后,才能把变量说明为该联合类型。
扩展资料
uint联合类型的定义:
union 联合名
成员表
;
成员表中含有若干成员,成员的一般形式为: 类型说明符 成员名
成员名的命名应符合标识符的规定。
例如:
union perdata
int Class;
char Office;
;
参考技术A (uint32)1<<10 -- 无符号32位整型量 1,左移10位。这种宏定义优点 是
xxxCLK,xxxDOUT 名字一目了然,编写程序的人,一看就知道它的 数学和物理 意思,
(uint32)1<<10 一看,就知道 右起 第11位 是 1,其余 位是 0
(uint32)1<<6 一看,就知道 右起 第7位 是 1,其余 位是 0
这种写法有可能有负作用,如果我写则用 #define xxxCLK ( (uint32)1<<10)
或干脆写
#define xxxCLK 0x0400
#define xxxDOUT 0x0040本回答被提问者采纳 参考技术B (uint32)1<<10表示将无符号32位整型数1左移10位。
具体的操作方法如下:
1的二进制数为:0000 0000 0000 0000 0000 0000 0000 0001
1<<10运算后变为:0000 0000 0000 0000 0000 0100 0000 0000 对应十进制的1024 参考技术C 左移操作
1有二进制: 00000000 00000000 00000000 00000001
左移10位之后变成: 00000000 00000000 00000100 00000000
结果就从1变成了2的10次方,即1024
#define xxxCLK (uint32)1<<10
#define xxxDOUT (uint32)1<<6
这两句是宏定义,也就是说再下面的程序中出现的xxxCLK表示的是 (uint32)1<<10
同样,xxxDOUT表示的是 (uint32)1<<6
好处是一改全改。。。。如果你需要修改这个参数或者变量的值。。。你只需要在#define xxxCLK (uint32)1<<10
这个地方改就可以了。。。不用到程序里面去改。。。
如果不用宏定义的话。。。你需要把程序里面每个出现的位置都修改。。。容易漏掉。。。也比较麻烦。。。
希望能帮到你。。。 参考技术D 左移操作,把二进制的1左移10位,相当于2的10次方
以上是关于C语言中的(uint32)1<<10 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章