You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取uint16_t的高15位并赋值给结构体stn字段?

提取stn变量的方法

你可以通过右移操作提取剩余15位并赋值给stn:

composedTrackNumber.stn = tmp1 >> 1;

原理说明

  • tmp1是16位无符号整数,fx对应最低位(第0位)。将tmp1右移1位后,最低位会被丢弃,剩下的正好是高15位数据,也就是stn需要的内容。
  • 因为uint16_t是无符号类型,右移时高位会补0,不会出现符号扩展的问题,直接赋值给15位的stn位域完全安全。

如果想要更严谨(明确限制只取15位),也可以配合掩码操作:

composedTrackNumber.stn = (tmp1 >> 1) & 0x7FFF;

0x7FFF对应16位二进制的0111 1111 1111 1111,用来确保只保留目标15位数据(右移后的结果本身已经是15位,这一步属于可选的冗余校验)。

内容的提问来源于stack exchange,提问作者tj26

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:02:33