目录

前言 

一.  二进制转换

二.  八进制转换

三.  十六进制转换


前言 

大家学习了这么久的C语言,有很多很多的小伙伴对于十进制,二进制,八进制,十六进制转换弄混了头,那咱们今天就来细细的对计算机中的数字转换来详细的来分析一下。

二进制:二进制(binary),发现者莱布尼茨,是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示。数字电子电路中,逻辑门的实现直接应用了二进制,现代的计算机和依赖计算机的设备里都使用二进制。每个数字称为一个比特(Bit,Binary digit的缩写)。

八进制:八进制(Octal),缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。八进制的数和二进制数可以按位对应(八进制一位对应二进制三位),因此常应用在计算机语言中。

十六进制:十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作十六进制数字。

在我们电脑自带的程序计算器中里面就有对于进制的转换,那我们为什么有了十进制还要发明出这些二进制,八进制,十六进制呢?

因为计算机的本质上只会使用数字‘0’和‘1’,计算机只能接受这两个数字,因此我们就根据需要要学会二进制,有小伙伴就会问那计算机可以看懂二进制,我们可以看懂十进制,那还需要这个八进制和十六进制干嘛呢?尤其是那个十六进制还有英文字母这不是难为我们嘛!其实并不是这样子的,因为在二进制中我们一个数字称为一个byte,8个byte称为一个字节,而在我们C语言中,int类型就是有4个字节,那是不是一个int类型就需要32个byte,那32个‘0’或者‘1’我们是不是就会看的眼花缭乱?所以八进制就可以三个byte一看,十六进制就可以四个byte一看,至于为什么四个一看,三个一看,我们后面就会解释,我们计算机存储int的地址(指针)就是采用十六进制存储的,这样我们查看的时候只有8个数字,不会让我们看不清。

一.  二进制转换

对于二进制的转换,我们先需要了解十进制是怎么样的?

十进制的个位数是不是就是10的零次方,十位数就是10的一次方,百位数就是10的二次方,千位数就是10的三次方,以此类推,我们可以理解每一位就是10的多少次方乘以这个位上的数字便是我们对于十进制的理解。

这样想想,我们二进制的第一位是不是就是2的零次方,第二位就是2的一次方,第三位就是2的二次方,第四位就是2的三次方,如此一想,好像貌似思路有点清晰了,当数字127进入计算器之后,我们发现127是小于128(也就是2的七次方)的,因此我们可以判断出来127在二进制中第八位中并不是1而是0,我们又发现127是大于64(也就是2的六次方)的,因此我们又可以判断出127在二进制中第七位是1,那第七位是1就相当于127-64了,这样原来的数字还剩下63,而63又是大于32而小于64的,这样第六位也可以确定是1,那后面就还剩下63-32了,原来的数字还剩下31……以此类推,最终我们得到的结果是0111 1111,这样一个二进制的数字,二进制的核心就在于逢二进一。

二.  八进制转换

我们了解清楚了二进制的原理,这样我们才能去想对于八进制如何转换。

如上图,我们给出了一个二进制数0111 1111 1111,转换为十进制是2047,那我们应该如何将2047转变为八进制数3777呢?八进制的核心在于就是逢八进一,而八正好也是二的三次方,那是不是三个二进制位的结果就等于一个八进制位呢?我们看这样一个数111(二进制),这个数在十进制中是7,在八进制中因为小于8所以在八进制中也是7,再看这样一个数1001(二进制),这个数在十进制中是9,但是在八进制中这个数确实11(八进制)大家有没有发现1 001(二进制)和1 1(八进制)其实很像呢?好像001(二进制)就等价于0乘以2的二次方加上0乘以2的一次方加上1乘以2的零次方。因此这三个二进制位我们分别称为421,三个一循环,那有小伙伴就要问了要是只有11或者10位怎么办,不是3的倍数的位数怎么办?那我们就补位补到有3的倍数位为止3。

三.  十六进制转换

而十六进制与八进制转换几乎可以说是没有区别,只不过就是将一次看三位改变成了一次看四位,将421改变成8421,不过需要注意的地方就是A=10,B=11.C=12,D=13,E=14,F=15。就例如上面的2047,如下图得到的结果就是7FF。

 对于当代聪慧的大学生来说,这一点点的进制转换不过是小菜一碟,我们的未来可是星辰大海,如果大家对于小编这期对于进制转换还算清楚的话,给个点赞吧!

更多推荐

计算机中关于数字的进制转换