二进制、十进制和十六进制

发布时间:10-14 浏览数:

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

5

0b101

0x05

6

0b110

0x06

7

0b111

0x07

8

0b1000

0x08

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

18

0b10010

0x12

……

……

……

表1 进制转换

 

2、对于二进制来说,8位二进制我们称之为一个字节,二进制的表达范围值是从0b00000000~0b11111111,而我们程序中用十六进制表示的时候就是从0x00到0xFF,这里教大家一个二进制转换十进制和十六进制的方法,二进制4位一组,遵循8,4,2,1的规律比如 1010,那么从最高位开始算,数字大小是8*1+4*0+2*1+1*0 = 10,那么十进制就是10,十六进制就是0xA。尤其二进制转十六进制的时候,十六进制一位刚好是和二进制的4位相互对应的,这些大家不需要强行记忆,用几次就熟练了。
3、对于进制来说,只是数据的表现形式,而数据的大小不会因为进制表现形式不同而不同,比如二进制的0b1、十进制的1、十六进制的0x01,他们本质上数值大小相等的同一个数据。我们在进行C语言编程的时候,我们只写十进制和十六进制,那么不带0x的就是十进制,带了0x符号的就是十六进制。

[!--temp.right--]