二进制, 十进制, 八进制, 十六进制
进制概述
进制即进位的制度.
X 进制:
加法: 某一位两个数字相加, 满 X 向高一位进一, 该位结果为两个数字之和减 X 的差.
减法: 某一位小数减大数时, 从高一位借一当 X, 加上这个小数再减大数, 即为该位的结果.
X 进制的基数为 X, 包含 X 个数字, 为 0, 1, 2, ... , X-1
.
二进制 (Binary)
二进制, 基数为 2, 包含 2 个数字, 为 0, 1
.
计算机内存中数据都是以二进制形式存储.
二进制加法: 某一位两个数字相加, 满二进一, 该位结果为两个数字之和减 2 的差.
二进制减法: 某一位小数减大数时, 从高一位借一当 2, 加上这个小数再减大数, 即为该位的结果.
八进制 (Octal)
八进制, 基数为 7, 包含 8 个数字, 为 0, 1, 2, 3, 4, 5, 6, 7
.
八进制加法: 某一位两个数字相加, 满八进一, 该位结果为两个数字之和减 8 的差.
八进制减法: 某一位小数减大数时, 从高一位借一当 8, 加上这个小数再减大数, 即为该位的结果.
十六进制 (hexadecimal)
十六进制, 基数为 16, 包含 16 个数字, 为 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
.
A 表示 10, B 表示 11, C 表示 12, D 表示 13, E 表示 14, F 表示 15.
字母不区分大小写, A B C D E F
也可以写作 a b c d e f
.
十六进制加法: 某一位两个数字相加, 满十六进一, 该位结果为两个数字之和减 16 的差.
十六进制减法: 某一位小数减大数时, 从高一位借一当 16, 加上这个小数再减大数, 即为该位的结果.
不同进制之间的转换
二进制, 八进制和十六进制转换为十进制
二进制, 八进制和十六进制向十进制转换时, 各位数字乘以它的位权再求和.
对于 N 进制:
- 整数部分, 从右到左, 第 i 位的位权为 Ni-1. i 从 1 开始计数.
- 小数部分, 从左到右, 第 j 位的位权为 N-j. j 从 1 开始计数.
此处的位权是以十进制表示的.
十进制转换为二进制, 八进制和十六进制
分成整数部分和小数部分分别转换.
如果一个十进制数同时包含整数部分和小数部分, 那么将整数部分和小数部分别转换, 然后再合并在一起即组合成对应进制的数.
整数部分
十进制整数转换为 N 进制整数遵循 “除 N 取余, 逆序排列”.
即: 用十进制整数不断除以 N, 直到商为零, 把各次余数 按照逆序从左到右
排列, 即得到 N 进制数.
例如:
小数部分
十进制小数转换成 N 进制小数遵循 “乘 N 取整, 顺序排列”.
用十进制小数不断乘以 N, 每次乘积的整数部分不变, 只用乘积的小数部分乘以 N, 直到小数部分为零. 将各次乘积的整数部分按照顺序从左到右排列, 即得到 N 进制小数.
十进制小数转换成其他进制小数, 结果可能为无限小数.
二进制, 八进制, 十六进制的互相转换
二进制整数和八进制整数的互相转换
二进制整数转换为八进制整数时, 从右到左每三位二进制数字转换为一位八进制数字, 高位不足三位时用零补齐.
八进制整数转换为二进制整数时, 从右到左每一位八进制数字转换为三位二进制数字.
二进制整数和十六进制整数的互相转换
二进制整数转换为十六进制整数时, 从右到左每四位二进制数字转换为一位十六进制数字, 高位不足四位时用零补齐.
十六进制整数转换为二进制整数时, 从右到左每一位十六进制数字转换为四位二进制数字.
C语言中的二进制, 十进制, 八进制和十六进制常量
一般的整数都默认为十进制.
通过前缀来指明是二进制, 八进制和十六进制.
八进制用前缀数字 0 来指明, 如 020 是八进制数字, 换算为十进制等于 16.
十六进制用前缀 0x 或 0X 来指明,如 0x10 或 0X10 是十六进制数字,换算为十进制等于 16.
使用不同的进制表示数字不会影响数的储存方式, 即 16, 020 和 0x10 的储存方式都一样,因为计算机内部是用二进制进行编码的.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术