最开始学进制时,老师讲的最多的是,记住二进制(Bin)只有0,和1,计算机只能识别二进制.对于我们的十进制(Dec)的数只有0-9,八进制(Oct)只有0-7,十六进制(Hex)只有0-9和a-f.
学C语言时,接触过二进制,学后来的C51时,也接触了二进制.对于二进制,可先学会自己取余的方式求得二进制,或者通过高进制用上8,4,2,1权重法求得.
如果是一个Hex的数,想转换成二进制的使用权重的方法(只适用数在15以内的数):
Hex | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 |
---|---|---|---|---|---|---|---|---|---|
Bin | 00001001 | 00001000 | 00000111 | 00000110 | 00000101 | 00000100 | 00000011 | 00000010 | 00000001 |
Hex | 0f | 0e | 0d | 0c | 0b | 0a | |||
Bin | 00001111 | 00001110 | 00001101 | 00001100 | 00001011 | 00001010 |
学过51单片机的当时,让做的流水灯,其中有关P1或P0口接的,就是从0x00-0x07;
当时学的数码管发光也用到来进制的知识,是有关数字0-9编码的,这里就不仔细说了.
现在就抛开最开始的重新认识一下编码.
计算机能识别的最小的单位是Bit(也就是0,1)(比特),Byte(字节)就是平常接触到的最常见的单位.1Byte=8Bit,对于我们的Bin,自然就是按Bit这个最小单位来储存,而对于我们的Hex要用四位Bit来存储,所以像0x8f,这就是一个Byte.
这里可以使用Linux的命令来做解释:
$nano BinOrHex
#输入
我看完阅兵后很激动.
I am very excited ,when I see the chairman Xi exam the huamn army.
#'Ctrl' + 'o'保存,'Ctrl' + 'x'退出
$ od -t x1z BinOrHex
#-t是输出的格式,x表示以16进制输出,1表示输出的整数表示占的字节数.z是显示"><"元字符
0000000 e5 88 9a e5 88 9a e7 9c 8b e5 ae 8c e9 98 85 e5 >................<
0000020 85 b5 e5 bf 83 e9 87 8c e5 be 88 e6 bf 80 e5 8a >................<
0000040 a8 ef bc 8e 0a 49 20 61 6d 20 76 65 72 79 20 65 >.....I am very e<
0000060 78 63 69 74 65 64 2c 77 68 65 6e 20 49 20 73 65 >xcited,when I se<
0000100 65 20 74 68 65 20 63 68 61 69 72 6d 61 6e 20 58 >e the chairman X<
0000120 69 e3 80 80 65 78 61 6d 20 74 68 65 20 68 75 6d >i...exam the hum<
0000140 61 6e 20 61 72 6d 79 20 2e 0a >an army ..<
内存的编号 | 16字节个整数(不要理解成数字) | '><'代表转换成原字符 |
---|---|---|
0000000 | e5 88 9a e5 88 9a e7 9c 8b e5 ae 8c e9 98 | >…< |
有’.'的表示超过7f的
就单独拿49来解释,这里用了ASCII的知识,不懂的可惜先跳过.
ASCII | 换行 | 空格 | |||||
---|---|---|---|---|---|---|---|
整数 | 10 | 22 | |||||
数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
整数 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |
字符 | A | B | C | D | E | F | G |
整数 | 65 | 66 | 67 | 68 | 69 | 70 | 71 |
字符 | a | b | c | d | e | f | g |
整数 | 97 | 98 | 99 | 100 | 101 | 102 | 103 |
0x49=73而ASCII里头,
73是ASCII中的I,
0x20=32是空格,
0x61=97是a.
地方有点小先就写到6.
八进制用的统一界定符(URL)就用到这个了.
比如我们输入网址输入的是汉字是浏览器是要转换成%XX(八进制数)
就像
UrlL进制->(URL格式)就是
%5f%72%6c
O(85)(114)(108)(前3个字母是)
现写到这里,后续的进制也是这个道理,是按8进制转码.