文章

2

粉丝

0

获赞

2

访问

30

头像
K1097 进制转换 (负进制)
备考笔记
发布于2026年3月22日 10:52
阅读数 13

 

第一步:先看题目 → 负二进制

题目说:把十进制数转成 -2 进制

我立刻反应:

这不就是进制转换吗?只是基数是 -2!


第二步:回忆普通进制转换怎么做?

普通转二进制:

  1. 除以 2
  2. 取余数
  3. 商继续算
  4. 最后倒着输出

那负二进制应该:

  1. 除以 -2
  2. 取余数
  3. 商继续算
  4. 倒着输出

第三步:突然发现一个大坑!

除以 -2 会出现 负数余数!

比如:

  • -3 % -2 = -1
  • -1 % -2 = -1

进制里余数不能是负的!必须是 0 或 1

所以我立刻想到:

必须修正余数!


第四步:怎么修正?

数学规则我脑子里直接出来:

如果余数 < 0

  1. 余数 += 2 → 变成 1
  2. 商 += 1 → 补回去

这是固定公式,背下来就能用!

c

运行

if (yu < 0) {
    yu += 2;
    chu += 1;
}

第五步:怎么输出才是正确顺序?

进制转换余数是倒着的

我想:

用递归最方便!

  • 先递归算商
  • 递归回来再输出余数

天然就是正确顺序!不用反转!

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发