二进制数据处理.ppt

二进制数据处理 福州大学 2013 级计算机类一班 031302126 杨锦洲 2014.09.08 问题描述 ? 给定一个正整数 N ,找出另一个正整数 M ,使得 N 和 M 转化为二进制时,它们所出现的“ 1 ”的个数一致, 且 M 必须比 N 大。输出一个满足条件的最小的 M 。 ? 例如 78 ,转换成二进制为 1001110 ,这个二进制数中 有 4 个“ 1 ”。而 83 ( 1010011 )和 86 ( 1010110 )都 满足二进制中“ 1 ”的个数与 78 一样,且值都比 78 大。但显然 83 是最小的那个,输出它。 问题分析 N :给定的正整数; M 要找到的数。 对 M 的要求: 一、“ 1 ”的个数与 N 相同; 二、大于 N ; 三、所有符合条件的数中的最小值。 问题解决 针对问题一:将 N 转换为二进制存储在数组中 考虑到问题二和三,这里采用逆序存储(低 位在前,高位在后)。 针对问题二、三:将“ 1 ”往高位移位。 例如: N:100101 (正常二进制数)→ 101001 (数组中) 将数组中第一个“ 1 ”向后移一位就可以得到 M 的逆序二进制数。 核心代码 (数组所有元素皆已初始化为 0 ) f

文档评论(0)

1亿VIP精品文档

相关文档