4.1 二进制、十进制和十六进制
2016-07-04 20:08
302 查看
进制,看似很简单的东西,但很多同学还是不能彻底理解。这里先简单介绍一些注意事项,然后还是从实验中讲解会比较深刻。
1) 十进制就不多说了,逢十进位,一个位有十个值: 0 ~ 9,我们的生活中到处都是它的身影。二进制就是逢二进位,它的一个位只有两个值:0 和 1,但它却是实现计算机系统的最基本的理论基础,计算机(包括单片机)芯片是基于成万上亿个的开关管组合而成的,他们每一个都只能有开和关两种状态,再难找出第三个状态了(不要辩解半开半关这个状态,它是不稳定态,是极力避免的),所以他们只能对应于二进制的
1 和 0 两个值,而没有 2、3、4......,理解二进制对于理解计算机的本质很有帮助。书写二进制数据时需加前缀 0b,每一位的值只能是 0 或 1。十六进制就是把 4 个二进制位组合为一位来表示,于是它的每一位有 0b0000 ~ 0b1111 共 16 个值,用 0 ~ 9 再加上 A ~ F(或 a ~ f)表示,那么它自然就是逢十六进位了,它本质上同二进制是一样的,是二进制的一种缩写形式,也是我们程序编写中常用的形式。书写十六进制数据时需加前缀 0x,下表是三种进制之间的对应关系。
表 4-1 进制转换
2) 对于二进制来说, 8 位二进制我们称之为一个字节,二进制的表达范围值是从0b00000000 ~ 0b11111111,而我们在程序中用十六进制表示的时候就是从 0x00 到 0xFF,这里教大家一个二进制转换十进制和十六进制的方法,二进制
4 位一组,遵循 8/4/2/1 的规律比如 0b1010,那么从最高位开始算,数字大小是 8*1+4*0+2*1+1*0 = 10,那么十进制就是 10,十六进制就是 0xA。尤其二进制转十六进制的时候,十六进制一位刚好是和二进制的 4 位相对应的,这些大家不需要强行记忆,多用几次自然就熟练了。
3) 对于进制来说,只是数据的表现形式,而数据的大小不会因为进制表现形式不同而不同,比如二进制的
0b1、十进制的 1、十六进制的 0x01,他们本质上是数值大小相等的同一个数据。我们在进行 C 语言编程的时候,我们只写十进制和十六进制,那么不带 0x 的就是十进制,带了 0x 符号的就是十六进制。
1) 十进制就不多说了,逢十进位,一个位有十个值: 0 ~ 9,我们的生活中到处都是它的身影。二进制就是逢二进位,它的一个位只有两个值:0 和 1,但它却是实现计算机系统的最基本的理论基础,计算机(包括单片机)芯片是基于成万上亿个的开关管组合而成的,他们每一个都只能有开和关两种状态,再难找出第三个状态了(不要辩解半开半关这个状态,它是不稳定态,是极力避免的),所以他们只能对应于二进制的
1 和 0 两个值,而没有 2、3、4......,理解二进制对于理解计算机的本质很有帮助。书写二进制数据时需加前缀 0b,每一位的值只能是 0 或 1。十六进制就是把 4 个二进制位组合为一位来表示,于是它的每一位有 0b0000 ~ 0b1111 共 16 个值,用 0 ~ 9 再加上 A ~ F(或 a ~ f)表示,那么它自然就是逢十六进位了,它本质上同二进制是一样的,是二进制的一种缩写形式,也是我们程序编写中常用的形式。书写十六进制数据时需加前缀 0x,下表是三种进制之间的对应关系。
十进制 | 二进制 | 十六进制 |
---|---|---|
0 | 0b0 | 0x00 |
1 | 0b1 | 0x01 |
2 | 0b10 | 0x02 |
3 | 0b11 | 0x03 |
4 | 0b100 | 0x04 |
…… | …… | …… |
9 | 0b1001 | 0x09 |
10 | 0b1010 | 0x0A |
11 | 0b1011 | 0x0B |
12 | 0b1100 | 0x0C |
13 | 0b1101 | 0x0D |
14 | 0b1110 | 0x0E |
15 | 0b1111 | 0x0F |
16 | 0b10000 | 0x10 |
17 | 0b10001 | 0x11 |
...... | ...... | ...... |
4 位一组,遵循 8/4/2/1 的规律比如 0b1010,那么从最高位开始算,数字大小是 8*1+4*0+2*1+1*0 = 10,那么十进制就是 10,十六进制就是 0xA。尤其二进制转十六进制的时候,十六进制一位刚好是和二进制的 4 位相对应的,这些大家不需要强行记忆,多用几次自然就熟练了。
3) 对于进制来说,只是数据的表现形式,而数据的大小不会因为进制表现形式不同而不同,比如二进制的
0b1、十进制的 1、十六进制的 0x01,他们本质上是数值大小相等的同一个数据。我们在进行 C 语言编程的时候,我们只写十进制和十六进制,那么不带 0x 的就是十进制,带了 0x 符号的就是十六进制。
相关文章推荐
- shell编程初步学习
- 56. spring boot中使用@Async实现异步调用【从零开始学Spring Boot】
- 封装、继承和构造函数
- Qt新建线程的方法(四种办法,很详细,有截图)
- 3.6 LED灯闪烁程序
- 【leetcode】19. Remove Nth Node From End of List
- BZOJ 1006 [HNOI2008]神奇的国度==最大势算法
- 基数排序
- C/C++常用头文件及函数汇总
- 3.5 74HC138三八译码器的应用
- NOI2003 文本编辑器 块状链表
- mysql 设置字段为null
- 使用Docker官方的Django包【转】
- HTML5+规范:Uploader(管理网络上传任务)
- label
- GridControl Group Summary Custom
- 3.4 单片机中三极管的应用
- 感觉今天一天没做什么事情啊QAQ,学习了一下java的基本语法,编写了几个小程序,还是总结一下吧
- Bitbucket Repository size limits
- php 审核管理