上一篇中提到了二进制与十进制的转化,以及身边的数据是如何保存在计算机中的。本次来谈谈另一种进制十六进制
我们知道二进制是计算机所能识别的数字,但是计算机中的数据并不全都是以二进制储存的,因为二进制的储存能力有限,在上一篇中提到,系统规定8位为一个字节,而每4个字节可以转换成为一个十六进制的数据。这样,就能减少计算机储存数据需要的位了。
十六进制,十进制,二进制
十六进制 | 十进制 | 二进制 |
---|---|---|
0 | 0 | 0000 |
1 | 1 | 0001 |
2 | 2 | 0010 |
3 | 3 | 0011 |
4 | 4 | 0100 |
5 | 5 | 0101 |
6 | 6 | 0110 |
7 | 7 | 0111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
A | 10 | 1010 |
B | 11 | 1011 |
C | 12 | 1100 |
D | 13 | 1101 |
E | 14 | 1110 |
F | 15 | 1111 |
由上图,我们可以知道二进制,十进制,十六进制之间的转化关系。
ASCII表中的字母部分
编号 | 字母 | 二进制码 | 编号 | 字母 | 二进制码 | |
---|---|---|---|---|---|---|
65 | A | 1000001 | 97 | a | 1100001 | |
66 | B | 1000010 | 98 | b | 1100010 | |
67 | C | 1000011 | 99 | c | 1100011 | |
68 | D | 1000100 | 100 | d | 1100100 | |
69 | E | 1000101 | 101 | e | 1100101 | |
70 | F | 1000110 | 102 | f | 1100110 | |
71 | G | 1000111 | 103 | g | 1100111 | |
72 | H | 1001000 | 104 | h | 1101000 | |
73 | I | 1001001 | 105 | i | 1101001 | |
74 | J | 1001010 | 106 | j | 1101010 | |
75 | K | 1001011 | 107 | k | 1101011 | |
76 | L | 1001100 | 108 | l | 1101100 | |
77 | M | 1001101 | 109 | m | 1101101 | |
78 | N | 1001110 | 110 | n | 1101110 | |
79 | O | 1001111 | 111 | o | 1101111 | |
80 | P | 1010000 | 112 | p | 1110000 | |
81 | Q | 1010001 | 113 | q | 1110001 | |
82 | R | 1010010 | 114 | r | 1110010 | |
83 | S | 1010011 | 115 | s | 1110011 | |
84 | T | 1010100 | 116 | t | 1110100 | |
85 | U | 1010101 | 117 | u | 1110101 | |
86 | V | 1010110 | 118 | v | 1110110 | |
87 | W | 1010111 | 119 | w | 1110111 | |
88 | X | 1011000 | 120 | x | 1111000 | |
89 | Y | 1011001 | 121 | y | 1111001 | |
90 | Z | 1011010 | 122 | z | 1111010 |
二进制与十六进制的转换
前面,我们了解了二进制、十进制与十六进制之间的关系后,可以开始实际应用了。
在此之前,我们要知道二进制与十六进制的转换方法。
二进制转为十六进制只需对照上面的表格就可以完成转换。
十六进制转换成二进制则是将每一个数据(0-F)拆成4个2进制数据,分别按照表格的对应关系写下来,不足4位的用零补齐。
注意:补零只能在高位与低位之间补充。
与、或、非
”与、或、非“是一种运算方式,就像四则运算是数学中的运算法则一样。
与如同并且。
现在我们将2个真进行相与,因为都是真,所以我们得到的结果是真。如果将真与假进行相与运算。得到的就是假。当然,2个假进行相与运算,得到的就是假了。
即一假则假
或从字面理解就是或者。
现在我们将2个真进行或运算,因为都是真,所以我们得到的结果是真。如果将真与假进行相或运算。得到的就是真。当然,2个假进行相或运算,得到的就是假了。
即一真则真
而非则是反过来的意思。
即我们将原来的真改为假,假改为真。
十六进制储存数据
e.g.
现在有一间房间,房间中有的座位有坐人,有的座位是空位。
假设现在该房间的座位有人的为x,空位为o,座位分布情况如下:
一 二 三 四 五 六 七 1 x o x o x o o 2 o o x o x o o 3 x x x o x o o 4 o o o x x x o 5 o o o o o o o 6 o o o o o o o
我们可以像这样用一张表格来记录,但计算机是没办法记录表格的,在计算机中的表格最终是以图像的形式被记录的。
如果我们定义座位有人记为1,没人记为0。我们的座位信息又可以表示为:101010000101001110100000111
相对计算机保存图片而言,这串数据就容易保存了。
按照之前的转换规则,我们又可以将二进制的数据4位一组的进行转换。得到的结果是:A853A07
如果用二进制储存这串数据的话,让我们人来看,会是一大串难读的东西。但如果转换后,我们就能轻松读懂了。
现在有一个公司,记某个部门经理能进房间为1,不能则为0。将公司的房间从一楼的右边开始从0进行编号。当前该经理的权限为
FA3
,根据规则对其进行转换。F=1111
,A=1010
,3=11
因为3转换后不足4位,所以进行补零。所以最终得到的结果是FA3=111110100011
,而不是FA3=1111101011
。所以该经理能进的房间是编号为0、1、5、7、8、9、10、11的房间。我们规定:
A权限为:110101001
B权限为:101100110
C权限为:010010101
1依旧为能进房间,0为不能。
现在有职员张三,李四。张三拥有AB权限,李四拥有BC权限。同时拥有他们,这是或的关系。所以,我们想要知道他们分别拥有什么权限,就对他们同时拥有的权限进行或运算。运算后的结果是张三拥有1EF即能进111101111权限,李四拥有1F7即能进111110111权限。
总结
计算机只能通过二进制储存数据,储存的结果难以让人直接理解。十六进制让人能够相对直观看懂内容。