16进制加法 keil_C/C++编程笔记:C语言进制详解,二进制、八进制和十六进制
我们平时使用的数字都是由 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
图5:十六进制减法示意图
自学C/C++编程难度很大,不妨和一些志同道合的小伙伴一起学习成长!
C语言C++编程学习交流圈子,关注+私信【C/C++编程】微信公众号:C语言编程学习基地
有一些源码和资料分享,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!希望对你有帮助!
16进制加法 keil_C/C++编程笔记:C语言进制详解,二进制、八进制和十六进制相关推荐
- c语言的编程switch,C语言之switch详解
一 switch的语法 switch(表达式){ case 常量表达式1: 代码块1 break; case 常量表达式2: 代码块2 break; case 常量表达式3: 代码块3 break; ...
- python十六进制转换成八进制_Python 进制转换 二进制 八进制 十进制 十六进制
全局定义一定不要丢了 全局定义 base = [str(x) for x in range()] + [ chr(x) for x in range(ord('A'),ord('A')+)] 二进制 ...
- ROS入门笔记(七):详解ROS文件系统
ROS入门笔记(七):详解ROS文件系统 文章目录 01 Catkin编译系统 1.1 Catkin特点 1.2 Catkin工作原理 1.3 使用`catkin_make`进行编译 02 Catki ...
- IP地址和子网划分学习笔记之《IP地址详解》
在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. IP地址和子网划分学习笔记相关篇章: 1.I ...
- IP地址和子网划分学习笔记之《子网划分详解》
一,子网划分概述 IP地址和子网划分学习笔记相关篇章: 1.IP地址和子网划分学习笔记之<预备知识:进制计数> 2.IP地址和子网划分学习笔记之<IP地址详解> 3.IP地址和 ...
- Android进阶笔记:Messenger源码详解
Messenger可以理解为一个是用于发送消息的一个类用法也很多,这里主要分析一下再跨进程的情况下Messenger的实现流程与源码分析.相信结合前面两篇关于aidl解析文章能够更好的对aidl有一个 ...
- JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】
黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...
- 小猫爪:i.MX RT1050学习笔记26-RT1xxx系列的FlexCAN详解
i.MX RT1050学习笔记26-RT1xxx系列的FlexCAN详解 1 前言 2 FlexCAN简介 2.1 MB(邮箱)系统 2.1.1 正常模式下 2.1.2 激活了CAN FD情况下 2. ...
- 操作系统之多线程编程—读者优先/写者优先详解
操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...
最新文章
- objc runtime 动态增加属性
- Win95架构师发布移动设备富媒体文档创建平台
- AI人必看!89页全网最全清华知识图谱报告(附PDF)
- mysql表创建在哪_mysql创建表命令是哪句
- 关于addEventListener和attachEvent的初步探讨
- 【cntk速成】cntk图像分类从模型自定义到测试
- 为什么说“医可救众生?佛可救众生!”
- Visual Studio的工程结构解析
- Eclipse / Intellij Idea配置Git+Maven+Jetty开发环境
- 9. Doctrine2
- 某面霸疯狂应聘IT名企的经历
- datatable高效写入mysql_如何将DataTable批量写入数据库
- Unity接入谷歌支付
- 基于Scrapy的交互式漫画爬虫
- Vue单向绑定与双向绑定解析
- 全新Redis6全部知识点,零基础入门
- outlook不断弹出“对以下服务器输入您的用户名和密码”
- 2018年年中个人总结
- 让Android控件随着屏幕旋转自由转移至任何地方(附demo)
- 聊天室案例,模仿QQ,微信群聊
热门文章
- php foreach 收邮件_php机制本身不提供多线程的操作,有了swoole就不一样了
- 解决6410 WINCE6 应用层调用SetSystemPowerState api关机无效的问题
- 固定资产管理有关的计算机知识,计算机技术在固定资产管理中的具体应用.pdf...
- yii mysql 主从_mysql主从同步实践YII
- c++ primer 第六版 pdf_A3N630	塑壳断路器如何更换.pdf
- float32精度_PyTorch 1.6来了:新增自动混合精度训练、Windows版开发维护权移交微软...
- sklearn中的支持向量机SVC
- MRP的数据处理-华北水利水电大学(作业)
- 【转】医学图像之DICOM格式解析
- 【转】ABP源码分析三十三:ABP.Web