首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
物联网/工业互联网
›
物联网
›
C 或 C++ 中用于表现常量的后缀:1ULL
返回列表
发新帖
C 或 C++ 中用于表现常量的后缀:1ULL
[复制链接]
发表于 2025-11-3 18:48:09
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
1ULL 是一个在 C 或 C++ 中用于表现常量的后缀,它详细指示编译器将这个数值视为特定范例的整数。让我们详细表明一下:
1ULL 的寄义
1
: 这是最根本的部门,表现数值 1。
U
: 表现该数值是无符号(Unsigned)的。这意味着它只能表现非负数,而不能表现负数。
LL
: 表现该数值是一个长整型(Long Long)。在大多数今世体系上,这代表64位整数。
因此,1ULL 表现的是一个64位无符号长整型数值 1。
为什么利用 1ULL
1ULL << MOTOR_DRIVER_NUM_0 和 1ULL << MOTOR_DRIVER_NUM_1 利用了这种情势来确保移位操纵是在64位无符号整数范围内举行的。这黑白常告急的,由于:
制止溢出
:假如你利用的数值范例不敷大,大概会导致溢出标题。比方,在32位体系上,假如实验对一个32位整数举行凌驾31位的左移操纵,会导致未界说活动或错误。
明白意图
:通过利用 1ULL,你可以清楚地表明你渴望举行的操纵是在64位范围内举行的,这对于明白和维护
代码
很有资助。
示例
假设 MOTOR_DRIVER_NUM_0 和 MOTOR_DRIVER_NUM_1 分别为 5 和 10,那么:
io_conf.pin_bit_mask = ((1ULL << MOTOR_DRIVER_NUM_0) | (1ULL << MOTOR_DRIVER_NUM_1));
复制
代码
这段
代码
的效果如下:
1ULL << MOTOR_DRIVER_NUM_0 相当于 1ULL << 5,效果是 0x20(即二进制的 000...00100000)。
1ULL << MOTOR_DRIVER_NUM_1 相当于 1ULL << 10,效果是 0x400(即二进制的 000...010000000000)。
然后利用按位或操纵符 | 将这两个值归并,得到终极的 pin_bit_mask 值为 0x420(即二进制的 000...010000100000),表现引脚5和引脚10被设置为高电平。
总结
1ULL 是一个64位无符号长整型数值 1。
利用 1ULL 可以确保在举行位操纵时不会发生溢出,而且可以或许处理惩罚必要较大数值范围的环境。
在你的代码中,1ULL 确保了位移操纵的效果富足大,可以准确地设置多个GPIO引脚。
如许做的长处是增长了代码的结实性和可移植性,特别是在处理惩罚差别平台或架构时。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
返回列表
忿忿的泥巴坨
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表