怎样快速对二进制和十进制进行互转化——IP地址规划与设计总结

最近一直在看全国计算机三级网络技术这本书,看到第二章的时候,不免会遇到计算机中最常用的进制转换问题。什么IP地址,什么子网掩码,什么网路地址,什么广播地址都会用到二进制和十进制的相互转化,而且最常用的是8位二进制数一组的转化,这就来总结相互转化最快的方法。

首先来认识标准分类的IP地址:

IP地址是由网络号与主机号组成的,长度是32bit,用点分十进制方法表示,这样就构成了标准分类的IP地址。常用的A类、B类、C类IP地址采用包括“网络号-主机号”两层结构。通常采用x.x.x.x的方式来表示,每个x为8bit,每个x的值为0~255,例如,202.113.29.119。

拿一个图来具体看看五类标准IP地址:

以上可以看出,IP地址的长度为32位二进制数,通常我们把它分为4组,每八位二进制数一组,每组转化为十进制数,每组之间用点来连接,这种方法叫做点分十进制。

比如一个IP地址为:192.168.128.1

写成二进制为:11000000 10101000 10000000 00000001

一,来看看怎么快速转化二进制数11111111:

1)首先应该记住八个十进制数字:128,64,32,16,8,4,2,1。这八个数字肯定是经常用到的,以上八个数字加起来恰好就为255。

2)二进制数11111111每一位对应的数字从左到右恰好是从大到小依次排列:128,64,32,16,8,4,2,1。

3)也就是可以这样对应进行转化相加:

1    1    1    1      1     1     1    1

128 + 64 + 32  + 16  +  8  +  4  +  2  + 1 =255

二,再来看其他一些常用十进制数字的转化(反向的必须记住):

1)254:这一看就是255减去1得到,也就是八位二进制数的最后一位置为零。

1    1    1    1      1     1     1    0

128 + 64 + 32  + 16  +  8  +  4  +  2  + 0 =254

2)252:还是用上述的方法进行相减,255减去(1+2)得到,将最后两位置为零。

1    1    1    1      1     1     0    0

128 + 64 + 32  + 16  +  8  +  4  +  0  + 0 =252

3)248:依然用上述的方法进行相减,255减去(1+2+4)得到,将最后三位置为零。

1    1    1    1      1     0     0    0

128 + 64 + 32  + 16  +  8  +  0  +  0  + 0 =248

4)240:通常我们知道(1+2+4+8=15),用255减去15就是240,因此后四位置为零。

1    1    1    1      0     0     0    0

128 + 64 + 32  + 16  +  0  +  0  +  0  + 0 =240

5)224:这个数可以用上述的减去法,也可以用前四位相加得到,看哪一种更加快速的运算得到,将后五位置为零:

1    1    1    0     0    0   0    0

128 + 64 + 32  + 0  +  0  + 0 +  0  + 0 =224

6)192:这个数使我们最为常见的数字,就是128+64得到,只有前两位为1,后六位均为零。

1    1    0    0      0     0     0   0

128 + 64  + 0  + 0  +  0  +  0  +  0  + 0 =192

7)128:这个数我们可以知道就是第一位为1,其余后面的均为零:

1    0    0    0      0     0     0   0

128 + 0   + 0  + 0  +  0  +  0  +  0  + 0 =128

三,再来看一些连续的1和0组成的常用的数字(反向的转化也必须记住):

1)10010000:根据讲到的拆分法进行相加就是128+16=144

2)10101000:拆分法得到128+32+8+168

3)10100000:拆分法得到128+32=160

4)10000001:拆分法得到128+1=129

5)10001000:拆分法得到128+8=136

6)01000000:拆分法得到0+64=64

7)00100000:拆分法得到0+0+32=32

8)00010000:拆分法得到0+0+0+16=16

9)01010000:拆分法得到0+64+0+16=80

其次我们来看划分子网的三级网络结构,增加了一个子网掩码的概念:人们提出了子网掩码或掩码的概念。子网掩码有时叫做子网屏蔽码。掩码的概念同样适用于没有进行子网划分的A类、B类、C类地址。

A类,B类和C类地址掩码:

简单的说,子网掩码就是由连续的1和连续的0组成,不会出现间隔的1和0,1表示网络位,0表示主机位。

来看子网掩码的表示,子网掩码依然是由32位二进制数组成,如果一个B类的网络号从主机位借位7位,由于B类的网络号为16位,加上借位的7位(当做网络位对待),就是23位网络号,那么子网掩码的的表示为:

标准B类地址:11111111 11111111 00000000 00000000

子网掩码地址:11111111 11111111 11111110 00000000(借用主机号7位)

那么转化为点分十进制的子网掩码地址为:255.255.254.0

因此子网号为7的子网掩码示意图:

另外一种的子网掩码的IP地址块表示方法为:网络地址/22(16个网络号+6个借位主机位网络号)

再来看广播地址的概念:在A类、B类、C类IP地址中,如果主机号是全1(二进制),那么这个主机号为广播地址。

简单的来说,网络广播站地址的就是将网络地址中的主机位全部置为零。

来看网络广播地址的表示,如果一个网络地址为195.1.22.64/27的广播地址具有考虑5位的主机号置1。由于64的二进制数为01000000,后5位的主机号置1之后为01011111(为十进制位95),那么网络195.1.22.64/27的广播地址为195.1.22.95。

最后来看CIDR地址聚合方法:

简单来说,就是先将所有的IP地址块写成二进制数,从左向右找出相同的前缀,将他们聚合,相同的前缀不变,主机号全部置为零。

来看一个CIDR聚合的例题:某企业分配给产品部的IP地址块为192.168.31.192/26,分配给市场部的IP地址块为192.168.31.160/27,分配给财务部的IP地址块为192.168.31.128/27,那么这三个地址经过聚合后的地址为多少:

1)首先就是将三个IP地址转换为二进制数:

192.168.31.192     11000000 10101000 00011111 11000000

192.168.31.160     11000000 10101000 00011111 10100000

192.168.31.128     11000000 10101000 00011111 10000000

2)从上述转换为二进制数后找出相同的前缀为24+1=25位,也就是前25位保持不变,将后面的主机号全部置为零,得到11000000 10101000 00011111 10000000

3)将聚合后的地址转化为点分十进制得到:

11000000 10101000 00011111 10000000

192      168     31      128

4)因此聚合后地址为:192.168.31.128/25

以上三类基本上就是网络技术IP地址的规划和设计所考的比较多的题目。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-30 04:31:52

怎样快速对二进制和十进制进行互转化——IP地址规划与设计总结的相关文章

二进制转十进制快速方法

要想快,那就记下下面几种常见的二进制--十进制转换: 以8位 来演示: 1.第一种: 00000001      1 00000010      2 00000100      4 00001000      8 00010000      16 00100000      32 01000000      64 10000000      128 2.第二种: 00000001      1 00000011      3 00000111      7 00001111      15 00

JAVA:二进制和十进制互转

package com.xxx.transfer; /** * 数字进制相互转换 * @see JDK中提供了这些功能 * @author le.li * */ public class NumberUtil { public static void main(String[] args) { // 通过X的n次方相加的方式,将二进制转换成十进制 System.out.println(binary2Decimal("1001")); // 通过取余数的方式,将十进制转成二进制 Syst

二进制字符串jpg图片互转

二进制字符串jpg图片互转(格式:FFD8FFE000104A******)如:FFD8FFE000104A46494600010100000100010000FFDB004300080606070605080707070909080A0C140D0C0B0B0C1912130F141D1A1F1E1D1A1C1C20242E2720222C231C1C2837292C30313434341F27393D38323C2E333432FFDB0043010909090C0B0C180D0D1832

进制(二进制、十进制、八进制、十六进制)

对于整数,有四种表示方式: 二进制:0,1 ,满2进1.以0b或0B开头. 十进制:0-9 ,满10进1. 八进制:0-7 ,满8进1. 以数字0开头表示. 十六进制:0-9及A-F,满16进1. 以0x或0X开头表示.此处的A-F不区分大小写. 如:0x21AF +1= 0X21B0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 A B C D E F 1.原码.反码.补码   所有数字在计算机底层都以二进制形式存在.  计

二进制与十进制的转换

表1二进制数和十进制数换算对照表 采用"二进制数"的算术运算也比较简单制造成本更经济.二进制的加法运算和乘法运算公式都各有四条规则加法有0+0=00+1=1,1+011110乘法有0*0=00*1=0 1*0=0 1*1=1而十进制的加法和乘法运算公式从00开始到99从0*0开始到9*9各需规则100条. 2:二进制代码 电子计算机中的数是用二进制表示的在计算机中也采用二进制代码表示字母.数字字符.各种各样的符号.汉字等.在处理信息的过程中可将若干位的

进制转换之二进制与十进制转换

一.正整数的十进制转换二进制: 要点:除二取余,倒序排列 解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等 于一或零时为止,倒取将除得的余数,即换算为二进制数的结果 例如把52换算成二进制数,计算结果如图: 52除以2得到的余数依次为:0.0.1.0.1.1,倒序排列,所以52对应的二进制数就是110100. 由于计算机内部表示数的字节单位都是定长的,以2的幂次展开,或者8位,或者16位,或者32位..... 于是,一个二进制数用计算机表示时,位数不足2的幂次时,高位上要补足若干个

二进制和十进制的相互转换

一. 什么是进制 1. 进制:就是进位制,是人们规定的一种进位方法. 对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位.二进制就是逢二进一,,十进制是逢十进一,. 2.  十进制的由来 十进制的由来是因为人类有十个手指. 3. :二进制的由来 其实二进制来源与中国,请看史料记载 18世纪德国数理哲学大师莱布尼兹从他的传教士朋友鲍威特寄给他的拉丁文译本<易经>中,读到了八卦的组成结构,惊奇地发现其基本素数(0)(1),即<易经>的阴爻yao- -和__阳爻,其进位制

递归实现二进制转十进制

题目: 应用递归,将输入的二进制数转换为十进制. #include <stdio.h> #include <stdlib.h> void binary_to_decimal(char *s, long dec) { if( *s == '\0' ) printf("Decimal: %ld\n",dec); else { if( *s != '0' && *s != '1' ) { printf("Illegal Input.\n&qu

Python进制转换(二进制、十进制和十六进制)

#!/usr/bin/env python # -*- coding: utf-8 -*- # 2/10/16 base trans. wrote by srcdog on 20th, April, 2009 # ld elements in base 2, 10, 16. import os,sys # global definition # base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] base = [str(x) for x