我们平时使用的数字都是由 0~9 共十个数字组成的,例如 1、9、10、297、952 等,一个数字最多能表示九,如果要表示十、十一、二十九、一百等,就需要多个数字组合起来。

例如表示 5+8 的结果,一个数字不够,只能”进位“,用 13 来表示;这时”进一位“相当于十,”进两位“相当于二十。

因为逢十进一(满十进一),也因为只有 0~9 共十个数字,所以叫做十进制(Decimalism)。十进制是在人类社会发展过程中自然形成的,它符合人们的思维习惯,例如人类有十根手指,也有十根脚趾。

进制也就是进位制。进行加法运算时逢X进一(满X进一),进行减法运算时借一当X,这就是X进制,这种进制也就包含X个数字,基数为X。十进制有 0~9 共10个数字,基数为10,在加减法运算中,逢十进一,借一当十。

二进制

我们不妨将思维拓展一下,既然可以用 0~9 共十个数字来表示数值,那么也可以用0、1两个数字来表示数值,这就是二进制(Binary)。例如,数字 0、1、10、111、100、1000001 都是有效的二进制。

在计算机内部,数据都是以二进制的形式存储的,二进制是学习编程必须掌握的基础。本节我们先讲解二进制的概念,下节讲解数据在内存中的存储,让大家学以致用。

二进制加减法和十进制加减法的思想是类似的:

  • 对于十进制,进行加法运算时逢十进一,进行减法运算时借一当十;
  • 对于二进制,进行加法运算时逢二进一,进行减法运算时借一当二。

下面两张示意图详细演示了二进制加减法的运算过程。

1) 二进制加法:1+0=1、1+1=10、11+10=101、111+111=1110


图1:二进制加法示意图

2) 二进制减法:1-0=1、10-1=1、101-11=10、1100-111=101


图2:二进制减法示意图

八进制

除了二进制,C语言还会使用到八进制。

八进制有 0~7 共8个数字,基数为8,加法运算时逢八进一,减法运算时借一当八。例如,数字 0、1、5、7、14、733、67001、25430 都是有效的八进制。

下面两张图详细演示了八进制加减法的运算过程。

1) 八进制加法:3+4=7、5+6=13、75+42=137、2427+567=3216


图3:八进制加法示意图

2) 八进制减法:6-4=2、52-27=23、307-141=146、7430-1451=5757


图4:八进制减法示意图

十六进制

除了二进制和八进制,十六进制也经常使用,甚至比八进制还要频繁。

十六进制中,用A来表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有 0~F 共16个数字,基数为16,加法运算时逢16进1,减法运算时借1当16。例如,数字 0、1、6、9、A、D、F、419、EA32、80A3、BC00 都是有效的十六进制。

注意,十六进制中的字母不区分大小写,ABCDEF 也可以写作 abcdef。

下面两张图详细演示了十六进制加减法的运算过程。

1) 十六进制加法:6+7=D、18+BA=D2、595+792=D27、2F87+F8A=3F11


图5:十六进制加法示意图

2) 十六进制减法:D-3=A、52-2F=23、E07-141=CC6、7CA0-1CB1=5FEF


图6:十六进制减法示意图

进制详解:二进制、八进制和十六进制相关推荐

  1. java中的进制输出转换_Java I/O : Java中的进制详解

    作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...

  2. 16进制加法 keil_C/C++编程笔记:C语言进制详解,二进制、八进制和十六进制

    我们平时使用的数字都是由 0~9 共十个数字组成的,例如 1.9.10.297.952 等,一个数字最多能表示九,如果要表示十.十一.二十九.一百等,就需要多个数字组合起来. 例如表示 5+8 的结果 ...

  3. c语言程序进制,C语言之进制详解

    进制 一种计数的方式.侧重点在于计数的时候是逢多少进一. 1)      C语言可以识别的进制 二进制 每一位. 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 在C语言中,写 ...

  4. PNG文件16进制详解

    详解PNG图片的16进制文件 1.概述 2.特性 3.文件结构 3.1.文件署名域 3.2.数据块 3.2.1.关键数据块 3.2.2辅助数据块 4.举例说明 ==前八字节分类表== ==关键数据块. ...

  5. 超大数据10进制转2进制详解(可推广到其他进制)/ Codeup 100000579 问题 C: 进制转换

    问题C:进制转换 时间限制 内存限制 1.000sec 32MB 题目描述: 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出. 输入: 多组数据,每行为一个长度不超过30位的十进制非负整 ...

  6. 进制基础:详解二进制、八进制和十六进制

    数据来源 1.二进制 二进制特点:两种符号(0-1)逢2进一 加法 向高位进位  减法 向高位借位 数钱: 0  ( 0表示0 和日常的逻辑一样 ) 1  ( 1表示1 和日常的逻辑一样 ) 10 = ...

  7. python十六进制转换成八进制_Python 进制转换 二进制 八进制 十进制 十六进制

    全局定义一定不要丢了 全局定义 base = [str(x) for x in range()] + [ chr(x) for x in range(ord('A'),ord('A')+)] 二进制 ...

  8. python十进制转八进制_python进制转换(二进制、十进制和十六进制)及注意事项...

    使用内置函数实现进制转换实现比较简单,主要用到以下函数: bin().oct().int().hex() 下面分别详解一下各个函数的使用(附实例) 第一部分:其他进制转十进制 1.二进制转十进制 使用 ...

  9. 二进制 八进制 十进制 十六进制 之间进制转换(图解篇)

    一.本文所涉及的内容(Contents)                      目录 一.本文所涉及的内容(Contents) 二.背景(Contexts) 三.进制转换算法(Convert) ( ...

最新文章

  1. Spark 分布式计算原理
  2. SVN-项目 XXX 受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何修改...
  3. Iframe高度自适应(兼容IE/Firefox、同域/跨域)
  4. matplotlib练习
  5. MX130+python3.7.6+CUDA 10.0+CUDNN 7.4.2+TensorFlow-gpu安装
  6. HIBERNATE 持久化基础
  7. java 高级泛型_Java 泛型高级
  8. mybatis学习笔记-02-第一个mybatis程序
  9. 解决:jquery-1.11.1.min.js红叉问题
  10. 《敏捷无敌》(8)之橄榄球与软件开发
  11. 2050:技术未必会使我们摆脱愚昧,有时正相反(下)
  12. 学习笔记(02):19年录制Zookeeper、Dubbo视频教程 微服务教程分布式教程 SpringBoot教程整合-传统互联网架构到分布式架构的架构演变...
  13. Quartus II13.0的破解过程
  14. pycharm切换python环境_在PyCharm的 Terminal(终端)切换Python版本的方法
  15. 工欲善其事,必先利其器 - 修炼Android Studio操作技巧
  16. 智能客服vs人工客服,两者真水火不容?
  17. 不止音乐与露营——聊聊极狐汽车的微信生态营销
  18. APS炒币机器人投资随记No8:醒来见证历史,实现负的流油
  19. 安装super-gradients包时遇到的一些错误
  20. 低学历不适合做程序员?专科与本科程序员之间有什么区别?

热门文章

  1. Temu拼多多跨境店铺如何快速上货?
  2. cesium 使用entities、primitives添加的模型并且改变模型颜色
  3. Stroke – 开源鼠标手势软件[Windows]
  4. 饥荒食物 + 物品全制造代码
  5. php imap 安装_php7安装imap扩展
  6. jersey 简单使用
  7. GBase XDM 数据库ldapdelete命令讲解和示例分析
  8. python身份证号码共18位_18位身份证校验
  9. python存储JSON
  10. ggplot2设置坐标轴范围_6.2 坐标轴:对连续变量设置坐标轴显示范围