数的表示与进制转换
摘要生成中...
AI 摘要
Hunyuan-lite
本文由本地笔记迁移而来
笔记创建于 240321,于 260606 迁移,并增补整理文章。
整数的表示
定理:令 b 是一个大于 1 的整数。则如果 n 是一个正整数,就可以唯一地表示为下面的形式:
可记为 。其中十进制的下标 10 可以省略。
- 二进制展开式只使用 0 和 1 这两个数字。
- 八进制展开式使用数字{0,1,2,3,4,5,6,7}.
- 十六进制使用数字{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}. 字母 A 到 F 代表十进制数字 10 到 15
二进制数字表示法:考虑一个形如 的数字,定义:

十进制数转任意进制
构造整数 n 的 b 进制展开式(基数乘除法):
- n 除以 b,得到商和余数。。数 是 n 的 b 进制展开式中最右边的数字。
- 除以 b。。余数 是 n 的 b 进制展开式中从右边开始的第二个数字。
- 继续将商依次除以 b,得到 b 进制的余数。当商为 0 时,进程终止。
该过程从右向左产生 n 的 b 进制数字。

任意一个二进制小数都可以用十进制小数表示。
总结:
- 整数部分除以基取余,最先取得的余数为最低位
- 小数部分乘基取整,最先取得的整数为最高位
- 最后结果拼接
理解方法详见我的博客文章:【刷题日记】算法题常用数学算法和技巧 | 半方池水半方田
二进制、八进制、十六进制

- 每个八进制数字对应一组三位二进制数字
- 每个十六进制数字对应一组四位二进制数字
二进制转八进制或十六进制总结:以小数点为界
- 整数部分从小数点往左,一组一组分,高位补零
- 小数部分从小数点往右,一组一组分,低位补零
平衡三进制
平衡三进制,也称为对称三进制。这是一个广义进位系统。
正规的三进制的数字都是由 0,1,2 构成的,而平衡三进制的数字是由 -1,0,1 构成的。它的基数也是 3(因为有三个可能的值)。
10 进制转换为平衡三进制的过程:在平衡三进制的转转换法中,需要先写出一个给定的数 n 在标准三进制中的表示。当 n 是用标准三进制表示时,其数字的每一位都是 0、1 或 2。从最低的数字开始迭代,我们可以先跳过任何的 0 和 1,但是如果遇到 2 就应该先将其变成 -1,下一位数字再加上 1。而遇到数字 3 (被进位的情况)则应该转换为 0 下一位数字再加上 1。
Python 的实现如下:
1 | def _decimal_to_balanced_ternary(self, n): |
本文参考
- 研究生课程《离散数学》数论与密码学部分
- 《CSAPP》相关内容
- 王道 408 考研笔记思维导图解耦
- 平衡三进制 - OI Wiki
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 半方池水半方田!
评论




