进制的转换

时间:2024-03-09 13:28:22

进制

1.1. 进制的简介

进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常

用的“正”字计数法,以及类似的tally mark计数)。对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X

进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

1.2. 进制的分类

在程序中,常用的进制可以分为以下几种:

二进制:以数字0-1来表示每一个自然数,逢2进1。

八进制:以数字0-7来表示每一个自然数,逢8进1。

十进制:以数字0-9来表示每一个自然数,逢10进1。

十六进制:以数字0-9,a-f来表示每一个自然数,逢16进1。

1.3. 进制的表示

同一个自然数,用不同的进制表示的话,结果可能是不一样的。例如,数字10,如果是二进制,表示数字2;如果是八进

制,表示数字8;如果是十进制,表示数字10;如果是十六进制,表示数字16。因此,不同的进制,需要有不同的标识,来

区分不同的进制。

二进制:以0b作为开头,表示一个二进制的数字,例如:0b10、0b1001...

八进制:以 0 作为开头,表示一个八进制的数字,例如:010、027...

十进制:没有以任何其他的内容作为开头,表示一个十进制的数字,例如:123、29...

十六进制:以0x作为开头,表示一个十六进制的数字,例如:0x1001、0x8F3C..

1.4. 进制的转换

1.4.1. 十进制转其他进制

辗转相除法:用数字除进制,再用商除进制,一直到商为零结束,最后将每一步得到的余数倒着连接以来,就是这个数

字的指定的进制表示形式。

image-20200704104358501

 18 = 0b10010 = 022 = 0x12

1.4.2. 其他进制转十进制

每一位的数字乘进制的位数-1次方,再将所有的结果累加到一起。

 0b 10010 =1x2^4 +1x2^1 =16+2= 18
 022 =2x8^1 +2x8^0 =16+2= 18
 0x12 =1x16^1 +2x16^0 =16+2= 18

1.4.3. 二进制与八进制, 十六进制的相互转换

  • 每一个八进制位可以等价替换成三个二进制位。

  • 每一个十六进制位可以等价替换成四个二进制位。

    image-20200704120105490

二进制八进制十进制十六进制
0 0 0 0
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10

1.5. 原反补

1.5.1. 数据的转换

在计算机中,所有的数据存储都是以二进制的形式存储的。文字、图片、视频...,在计算机中都是二进制。那么,在计算机的存储系统中,每一个文件都有大小。那么文件的大小是如何计算的?

每一个二进制位称为一个比特位(bit)

8个比特位称为一个字节(byte)

从字节开始,每1024个单位向上增1。

 1024进制:
 Byte -> KB -> MB -> GB -> TB -> PB -> EB -> ZB -> YB -> BB -> NB -> DB -> CB -> XB
 8进制(8位1字节):
 8 Bit(位) -> 1 Byte(字节)
 
 什么是内存?
 a)内存是计算机中重要的部件之一,它是外存与CPU进行沟通的桥梁。
 b)计算机中所有程序的运行都是在内存中进行的.
 c)内存是瞬时状态下的存储空间,造价高、工业上的设计具有瓶颈,不具有普及性。
 
 什么是内存条?
 a)内存条一般指随机存取存储器。
 b)随机存取存储器(英语:Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。
 
 什么是硬盘?
 硬盘(港台称之为硬碟,英文名:Hard Disk Drive, 简称HDD 全名温彻斯特式硬盘)由一个或者多个铝制或者玻璃制的碟片组成。绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。
 
 硬盘和内存的区别是什么?
 a)定义用途不同:
 固态硬盘是存储设备,而内存条是中转设备。
 b)东西存储方面:
 固态硬盘在断电后存储在其内部的东西不会丢失,而内存断电后再开机信息就没有了。
 c)外观方面:
 固态硬盘是一块长方体状的设备,而内存条是一个长条形的设备。
 d)接口方面:
 固态硬盘的接口分为电源接口和信号接口。而内存条是金手指类接口。
 e)操作方面:
 不是所有的操作都要经过硬盘,但是所有的操作都要经过内存
 
 为什么我们买的硬盘的实际的空间要比报出的空间要小?
 计算机的硬盘的换算机制往往是1024进制的,而有一些厂商在制作硬盘时往往为了计算方便以1000进制来进行制作,所以得到的硬盘空间往往要小于给出的空间.
 
 Java虚拟机(Java程序)默认分配到的物理内存是1/8(在不进行人为操作配置的情况下)

 

1.5.2. 负数的表示

在使用二进制表示数字的时候,通常会写满1个字节,如果1个字节表示不了,使用2个字节。如果2个字节表示不了,使用4个字节。以此类推,8个字节、16个字节、32个字节...

在使用二进制表示数字的时候,最高位(最左侧的位)不是用来表示数字的大小的,而是用来表示数字的正负的。0代表整数,1代表负数。因此,最高位又被称为符号位。

 0b00001000所表示的数字是8      0b10001000所表示的数字是-8

 

1.5.3. 补码的引入

 计算机理论基础
 编程:编写程序。
 其实就是操作计算机,让计算机帮我们实现我们想要的需求。
 计算机其实是一个非常单一的机器,计算机只认识两个数字: 0 和 1,并且只会做加法。

1.5.3.1. 符号位参与运算的问题

在数据的运算中,由于有符号位的存在。符号位直接参与运算,会导致计算的结果出问题。

例如,在计算8+(-8)的时候,如果直接使用二进制表示形式进行运算的时候:

00001000+10001000=1001

得到结果 : -16

原因就是因为符号位参与了运算,导致计算的结果出了问题。

1.5.3.2. 原反补

     为了规避在计算过程中,符号位的参与运算,导致计算结果出错。人们引入了补码,规避了这个问题。在计算机中,所有的数据存储和运算,都是以补码的形式进行的。
  • 原码:一个数字的二进制表示形式,前面的计算二进制表示形式,得到的就是原码。

  • 反码:正数的反码与原码相同;负数的反码是原码符号位不变,其他位按位取反。

  • 补码:正数的补码与原码相同;负数的补码是反码+1。

 例: 8,因为是正数,原反补都是0000 1000
 -8[原] = 1000 1000
 -8[反] = 1111 0111
 -8[补] = 1111 1000

 

1.5.3.3. 补码运算

在计算机中,所有的数据存储和运算,都是以补码的形式进行的。因此,在进行数据运算的时候,将数据计算出补码,再进行运算。

 8 + (-8) = 0
 0000 1000 + 1111 1000 = 1 0000 0000 ----> 0000 0000
 在上述的计算结果中,出现了多出一位的情况,这种情况,称为溢出。
 如果出现了溢出的情况,溢出位直接舍去不要,即最后的计算结果是00000000,结果是0.
 
 
 
 8 + (-16) = -8
 0000 1000 + 1111 0000= 1111 1000 ----> 1000 1000
 注意:补码与补码的计算结果,还是补码。所以,我们需要将这个结果再转成原码。
 补码求原码的过程:再对这个补码求补即可。得出结果:10001000,结果是-8