通过率 78% · 提交 9 · 通过 7
系统从传感器的某个寄存器读取一个 32 位的 int 型整数 packet。请按如下要求解析输入数据,然后按十进制格式输出结果。 该数据的二进制结构定义如下: bit 0(最低位):状态。1 表示传感器正常,0 表示传感器故障。 bit 1 ~ bit 2:寄存器 ID。0 ~ 3。 bit 3:数据类型。1 表示变长数据类型,0 表示固定长度数据类型。 bit 4 ~ bit 11:数据修正因子。 bit 12 ~ bit 15:数据有效长度。0 ~ 15,数据类型为 1 时才生效。 bit 16 ~ bit 30:数据。数据类型为 1 时,从低到高依据数据有效长度确定实际有效数据位;数据类型为 0 时,全部为有效数据位。 bit 31:数据奇偶校验位:数据中的所有有效数据位与奇偶校验位中 1 的个数为偶数,表示数据校验通过;否则为不通过。
解析流程:
这类题属于算法机考高频题型中「200分 / 华为OD」方向的高频题型,通常考察对「200分 / 华为OD」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
输入为一个 32 位整型数值 packet。
按十进制格式输出解析结果。
示例 1
输入示例
343873
输出示例
4
正常解析(寄存器 ID = 0,& 运算)。 输入:packet = 0x00053F41(十进制 343873)。 二进制:0000 0000 0000 0101 0011 1111 0100 0001。 分析: bit 0:1 bit 1 ~ bit 2:00 bit 3:0 bit 4 ~ bit 11:1111 0100 bit 12 ~ bit 15:0011 bit 16 ~ bit 30:000 0000 0000 0101 bit 31:0 解析流程: 状态检查:状态为 1,正常。 数据提取:数据类型为 0,实际数据为 0x0005。 奇偶校验:数据 0x0005(二进制 101)有 2 个 1。校验位为 0。总数 2 + 0 = 2(偶数),校验通过。 运算:寄存器 ID 为 0,执行与:0x05 & 0xF4。 0000 0101(5) 1111 0100(244) 结果:0000 0100 & 0x0FFFFFFFF = 4(十进制) 输出:4。
示例 2
输入示例
0
输出示例
-1
输入:packet = 0x00000000(十进制 0)。 二进制:0000 0000 0000 0000 0000 0000 0000 0000。 分析: bit 0:0(表示异常) 返回:-1。
时间限制 1000 ms · 内存限制 256 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有