二、八、十六都分不清,怎好意思说是搞计算机的?

2023-10-25 17:10:07 浏览数 (1)

将程序视点设为星标精品文章第一时间阅读

大家好,欢迎来到程序视点!我是小二哥。

今天,紧接着上期的进制的主题,我们一起来看看进制间的转换问题?这要都分不清楚,咋好意思说我们是做程序的呐~

前言

对于整数,有四种常见的表示方式:

  • 二进制(binary):0,1 ,满2进1.以0b或0B开头。
  • 十进制(decimal):0-9 ,满10进1。
  • 八进制(octal):0-7 ,满8进1. 以数字0开头表示。
  • 十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。

我们先来回顾下二进制的相关知识。用张图来总结下:

因此,-1的在计算机中的二进制码是这样来的。

十进制与二进制、八进制、十六进制转换(重点)

首先我们来学习十进制与二进制之间的转换,这是必须要掌握的哦。

十进制转二进制

如果我们想将十进制转为二进制,可以采用辗转法,将十进制除以2再取余,然后将余数和最后的1按照从下向上倒序写的方法。例如,把十进制的150转为二进制的10010110

来个顺口溜记一下:除2取余,逆排序

这个方式对不对呢?当然是对的!我们将二进制数按权展开,相加即为十进制的数。这就是我们二进制转十进制的方法。

二进制转十进制

从左到右,每个二进制数按权展开相加,得到十进制数。现在把上面的10010110转回去。

对于二进制到十进制的转换,大家记住一个从左到右,1248规律即可。最低位上计算出来的十进制结果最大值就是1,往前一位的最大值是2,以此类推,4、8、16、32、64、128、256..... 因此,如果该二进制位上是1,该位置上肯定可以得到对应的十进制最大值,否则只能得到0。比如11111111转成对应的十进制,就可以直接计算:1 2 4 8 16 32 64 128=255

有了上面十进制和二进制间的转换关系,我们可以依葫芦画瓢解决十进制与八进制和十六进制的转换问题。

十进制转八进制或十六进制

十进制转二进制是:除2取余,逆排序

那么,我们可以顺势记住如下结论:

十进制转八进制就是:除8取余,逆排序十进制转八进制就是:除16取余,逆排序

八进制或十六进制转十进制

二进制数据采用位置计数法,其位权是以2为底的幂。这就是我们前面说的“按权展开相加”。同理,八进制和十六进制也可以这样推导:八进制的位权是以8为底的幂,十六进制的位权是以16为底的幂。

ps:这里需要记住一个知识点。无论几进制,最低位都是1,n进制位权计算:高位=低位n。

二进制 第1位:1(最低位位权) 第2位:12=2 第3位:22=4 ...

二进制与八进制和十六进制的转换

十进制转二进制、八进制、十六进制,我们按照一个套路就搞定了。这非常好理解和记忆。那二进制、八进制、十六进制间怎么转换呢?

最实在的办法是:转为十进制后,再转为其他进制。这个方法绝对不会错。

好啦!有的小伙伴就说了,这样要除来除去,还有求幂,太麻烦了!有没有比较取巧的方法呢?

有的!关键点在:8是2 ^ 3,16是2 ^ 4。二进制转八进制和十六进制可以利用其转换。通俗的讲,就是每3个二进制位表示一个八进制位,每4个二进制位表示一个十六进制位

二进制转八进制
八进制转二进制

二进制转八进制,是每3个二进制位表示一个八进制位(即每3个二进制位按权展开求和得到一个八进制位)。那反过来,一个八进制位要得到它对应的3个二进制位,不就是除2取余,逆排序吗?

二进制转十六进制
十六进制转二进制

有了前面八进制转二进制的推论,我们也可以知道:一个十六进制位要得到它对应的4个二进制位,就是除16取余,逆排序

小结

进制转换在笔试中也可能考察,是一个基础的内容。这个部分相对比较简单,就怕大家把自己绕进去了。本文涵盖了常见的二进制、八进制、十进制、十六进制间的转换问题。主要分两个部分:一是十进制与二进制、八进制、十六进制的转换,二是二进制与八进制、十六进制的转换。有了这两个基础,八进制和十六进制间的转换,就可以用十进制或二进制作为中间桥梁进行转换了。

One more thin

0 人点赞