目录
一,进制类型
进制的类型主要有,十进制,二进制,八进制,十六进制。
我们日常所常用的就是十进制,逢十进一,按这个说法就可以知道,n进制就是逢n进1。
二,进制如何计算及其要素
进制 | 数码 | 基数 | |
十进制 | 0~9(总共 10个) | 10 | |
二进制 | 0和1 | 2 | |
八进制 | 0~7 | 8 | |
十六进制 | 0~9,a~f(a代表10) | 16 |
1.进制如何计算
这个无需多说了吧我想,但我还是把这几个进制用一种表现方式写出来,比如1234,我们就可以这样计算:
1234=4 X 10^0+3 X 10^1+2 X 10^2 +1 X 10^3
0.123=1X 10^-1+2 X 10^-2+3 X 10^-3
这就是具体的计算方法,那么以这个方法我们可以类推出二进制,八进制和十六进制:
二进制:
1110=0 X 2^0+1 X 2^1+1 X 2^2 +1 X 2^3
八进制:
1357=7 X 8^0+5 X 8^1+3 X 8^2 +1 X 8^3
十六进制:
9ACE=14 X 16^0+12 X 16^1+10 X 16^2 +9 X 16^3
就是这样计算,一下子如果看不懂,把十进制的计算方法多看几遍,理解他的计算原理,这样就可以举一反三了。
三,进制的表示方法
这里我们也用表格的方式来表达
进制 | 前缀法 | 后缀法 |
二进制 | 0b110 | 110B |
十进制 | 视为没有 | 110D |
八进制 | 0110 | 110O |
十六进制 | 0x110 | 110BH |
可以知道,16进制因为数码有a~f,所以容易识别错误,我们一般不用但是也需了解。
四,进制之间的互相转换
1.十进制转换二进制:
第一个方法大家小学应该是学过的:一直除以二,知道除尽,然后从下往上取余即可
第二个方法就比较直观了,用直截了当的言语表述:
二进制表格:
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1024 | 512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
那么你要计算1025转换二进制也要除2?非常麻烦我们不推荐,再来查看这个表格,
1025=1024 +1,1024是二进制第11位1表示的值,1是第一位,所以我们很快得出,十进制1025的二进制,10000000001,简单来说,看这些数字哪几位的值加起来等于所求值即可。其他进制同理,因为博主很懒所以就不举例了因为是一样的,我相信天才们看完这个那么其他进制不需要我说也会了。
2.二进制与八进制和十六进制的转换
2.1二进制与八进制
看起来很难,实际上简单的一,直接解释
二进制110转八进制:三合一,110=6,那么八进制就是6,是不是很简单。
举个长点的例子:111111110111111:看着长,三个三个分开111 111 110 111 111,把这几组二进制数变成十进制: 7 7 6 7 7,也就是77677,是不是非常简单。
那八进制转换二进制呢?77677变成7 7 6 7 7,然后这组数字每一个二进制等于多少?
就是111 111 110 111 111,也就是八进制77677的二进制是1111111101111111
2.2二进制与十六进制
上面拆成三个或者三合一,这个就拆成四个或者四合一不就好了,一样举例子:
二进制1111 1111 1110 1111:15 15 14 15,但是我们不能这么写,上面说过,15是f,14是e,那么我们就要写成ffef。
那么反过来同样,ffef便是f f e f,也就是15 15 14 15,转换成二进制1111 1111 1110 1111,没错就是这么简单
2.3特殊情况
刚刚说到拆分合并,三合一四合一,但是有时候不够了数字,还是举例:
二进制11110110111,(补充一下从右往左拆分哈),要转换程八进制也就是 11 110 110 111,诶有个11怎么办,前面加个0啊怎么办当然是加个0啊!十六进制同理。
五,原码反码补码
在计算机中我们为了简化运算以及符号处理问题,于是引入了原码反码补码这三个概念。
一,原码
我们同样举例,-129,他的原码就是1 10000001,为什么有个1?因为这是符号位,只需记住最前面的0代表正数,1代表负数即可,129就是0 10000001
二,反码
那么-129的反码该如何书写,我们知道,-129的原码是1 10000001,反码就是除了第一位的符号位,其余数值取反即可(1变0,0变1),所以-129的反码就是1 01111110。
三,补码
也是十分简单的计算,就是这个数的反码加一即可,-129的反码是1 01111110,那么加一
就是1 01111111,就是这么的简单。
四,特殊情况
但是,这里有一个特殊情况。在8位表示中,1 00000000
实际上表示的是 -128。这是因为在补码表示法中,最左边的位是符号位,当符号位为1时,表示这是一个负数。而 1 00000000
是 -128 的补码表示,因为 -128 的反码是 1 11111111
,补码就是反码加1。
如果你的问题是在16位的上下文中,那么反码 1 11111111 11111111
的补码将是 1 00000000 00000000
,这表示 -32768,因为在16位补码表示法中,最左边的位是符号位,当符号位为1时,表示这是一个负数,而 1 00000000 00000000
是 -32768 的补码表示。
在任何情况下,补码都是反码加1。如果反码是全部位都是1,那么补码将是全部位都是0,除了符号位(在正数的情况下),或者符号位为1(在负数的情况下)。
感谢观看!!!若有不足或者问题请联系博主^-^