大整数位序反转
2026 华为OD机试真题 8月19日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
小华是一名嵌入式开发工程师,在处理芯片寄存器数据时,经常需要对超多位数据进行位翻转操作。寄存器中的数据可能是几百位甚至更长。
给定一个十进制大整数(最多 100 位),请将其二进制表示中的所有位顺序全部翻转(最低位变成最高位,次低位变成次高位,以此类推),然后输出翻转后的十进制表示。
输入描述
一个十进制大整数(字符串形式,范围:0 ~ 10^100 - 1,输入不带前导零,除非为 0)。
输出描述
翻转后的十进制整数(字符串形式,不能有前导零,除非输出为 0)。
示例1
输入
1
输出
1
说明
1 的二进制为
1,翻转后仍为1,对应十进制 1。
示例2
输入
2
输出
1
说明
2 的二进制为
10,翻转为01(即1),对应十进制 1。
示例3
输入
4
输出
1
说明
4 的二进制为
100,翻转为001(即1),对应十进制 1。
解题思路
核心思想
将输入的十进制大整数转成二进制字符串,反转这个二进制字符串,再把反转后的二进制字符串转回十进制字符串。
需要注意 0 的二进制反转后仍然是 0。
算法步骤
- 读取一行十进制大整数字符串。
- 如果输入为
0,直接输出0。 - 将十进制大整数转成二进制表示。
- 反转二进制字符串。
- 将反转后的二进制字符串转回十进制并输出。
复杂度分析
设输入十进制位数为 d,二进制位数为 b。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/banxia_frontend/article/details/163896533




