点分十进制ip地址转换为二进制ip地址

合集下载

计算机IP地址的分类,二进制、十六进制、八进制、十进制间的转换

计算机IP地址的分类,二进制、十六进制、八进制、十进制间的转换
D类地址:224.0.0.0~239.255.255.255
E类地址:240.0.0.0~247.255.255.255
二、不同进制间的转换
1.十进制与二进制间的转换
(1)二进制转换成十进制
要从右到左用二进制的每个数去乘以2的相应次方(次方要从0开始算起)例如:二进制数1101转化成十进制
1101(2)=1*20+0*21+1*22+1*23=1+0+4+8=13
5.十六进制与二进制
(1)二进制转换为十六进制
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
下面列出四位二进制数xxxx所有可能的值:
二进制
十六进制
二进制
十六进制
1111
F
1001
9
1110
E
……
……
1101
D
1100
C
1011
B
0001
1
1010
A
0000
0
(2)十六进制转换成二进制
三.计算机主要性能指标
1、CPU主频
主频是描述计算机运算速度最重要的一个指标。通常所说的计算机运算速度是指计算机在每秒钟所能执行的指令条数,即中央处理器在单位时间内平均“运行”的次数,其速度单位为兆赫兹或吉赫兹。
2、字长
一般来说,计算机在同一时间内处理的一组二进制数称为一个计算机的“字”,而这组二进制数的位数就是“字长”在其他指标相同的情况下,字长越长,计算机处理数据的速度就越快。
(1)八进制转换成十进制
八进制就是逢8进1。八进制数采用0~7这八数来表达一个数。八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方,……以此类推。

ip地址二进制运算

ip地址二进制运算

IP地址十进制转换为二进制基本算法之前回答过一个这样的问题用一个随便的IP举个例子68.25.193.25128,64,32,16,8,4,2,1先记住这几个数字拿68举例子第一位128大于68,写作0,68比64大,相减得4倒数第三位是4,能减去的都写1(包括相减等0),其他的位数写0如下:128,64,32,16,8,4,2,10, 1 , 0, 0,0,1,0,0这个是68的二进制数再说25的,25比16大,之前都大于25,所以16前都是写0,25减16等于9,9继续往下比,大于8,8下面写1,再9减8,还剩1,最后一位就是1128,64,32,16, 8, 4, 2, 10 0 0 1 1 0 0 1看明白了吗?简便算法教你一个简单的方法。

每8位二进制,各位从左到右对应的权值分别是 128,64,32,16,8,4,2,1 。

(即2的n-1次方,n是从右到左当前位的位数)所以随便拿一个256以内的数给你化为二进制,都可以分解为权值相加。

对应的权值的位值为1,其他位为0即可。

比如137,137=128+8+1,所以这几个权值对应的位应该是1,其他位为0,化为二进制即是:1000 1001Ip地址和子网掩码做“与”运算ip地址是标识网络上唯一台计算机的一串32位二进制数。

但是为了便于记忆就给转换成了4组十进制的数,每个用点隔开。

子网掩码与ip地址进行运算都是通过二进制数运算的,它们是进行与运算。

就是1与1=1 1与0=0 0与1=0 0与0=0比如ip地址192.168.1.1(这是三类ip地址,每一类都有固定取值范围),转化成二进制是11000000101010000000000100000001它的子网掩码是255.255.255.0,转换成二进制是11111111111111111111111100000000按上面做与运算得到结果110000001010100000000000至于有什么作用:首先必须的知道子网掩码一定是连续的1和连续的0连续的1代表网络地址,连续的0代表的是主机地址。

TCPIP协议族4-9131415章答案

TCPIP协议族4-9131415章答案

TCPIP协议族4-9131415章答案第4章IP地址:分类编址8.试把以下的IP 地址从二进制记法转换为点分十进制记法。

a.0 1111111 11110000 01100111 11111101b.10101111 11000000 11110000 00011101c.11011111 10110000 00011111 01011101d.11101111 11110111 11000111 00011101e.11110111 11110011 10000111 11011101解我们把每一组8 位换成其等效十进制数,并增加隔开的点:a.127.240.103.253b.175.192.240.29c.223.176.31.93d.239.247.199.29e.247.243.135.22111.试找出以下IP 地址的netid 和hostid:a.114.34.2.8b.19.34.21.5c.23.67.12.1d.127.23.4.0解以上IP 地址都是 A 类地址,故前8 位为netid,后24 位为hostid解a.创建500 个子网,这表示我们应当在这个场所的前缀上增加9 个1(log 5002 9),子网前缀是/17,所以子网掩码是:255.255.128.0.b.每一个子网有232 17215个地址.c.第一个子网的第一个地址是:16.0.0.0/17,最后一个地址是:16.0.127.255/17.前缀长度是17,这表示我们必须保留前17 位不变,然后把剩下的15 位置为0,所以第一个地址是16.0.0.0/17;为了找出最后一个地址,我们需要把232 17215 -1 (用点分十进制表示为127.255)与第一个地址相加,得到结果16.0.127.255/17.d.最后一个子网的第一个地址是:16.249.128.0/17,最后一个地址是:16.249.255.255/17.由于要500 个子网,而前缀长度是17,其网络号要加上500-1=499 为16.00000000.0| 0000000.016.11111001.1 |0000000.0………………………………16.249.128.06.某组织分配到地址块130.56.0.0/16。

linux inet_pton 使用举例

linux inet_pton 使用举例

inet_pton是一个将点分十进制格式的IP 地址转换为计算机可以识别的二进制IP 地址的函数。

它在Linux 系统中常用于网络编程。

下面是一个简单的inet_pton使用示例:c复制代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<arpa/inet.h>int main() {char ip_address[] = "192.168.1.1"; // 要转换的 IP 地址struct in_addr binary_ip;if (inet_pton(AF_INET, ip_address, &binary_ip) == 0) {printf("IP address: %s\n", ip_address);printf("Binary IP address: %s\n", inet_ntoa(binary_ip));} else {printf("Failed to convert IP address.\n");}return0;}在这个示例中,我们首先定义了一个字符串ip_address,它包含我们要转换的IP 地址。

然后,我们使用inet_pton函数将该IP 地址转换为二进制格式,存储在binary_ip结构中。

如果转换成功,我们使用inet_ntoa函数将二进制IP 地址转换回点分十进制格式,并打印出来。

如果转换失败,我们打印一条错误消息。

请注意,此示例仅适用于IPv4 地址。

如果要处理IPv6 地址,请使用inet_pton的AF_INET6版本。

ip映射原理

ip映射原理

ip映射原理IP映射原理IP映射原理是指将一个IP地址映射到另一个IP地址的过程。

在计算机网络中,IP地址是唯一标识一个网络设备的地址,它由32位二进制数组成。

在实际应用中,为了方便人们记忆和使用,IP地址通常以点分十进制的形式进行表示。

IP映射原理的核心是将一个IP地址转换为另一个IP地址,这个过程通常发生在网络层。

在互联网中,IP映射原理有两种常见的实现方式:静态映射和动态映射。

静态映射是指通过手动配置的方式将一个IP地址映射到另一个IP 地址。

这种方式的优点是配置简单,映射关系固定,不会发生变化。

但是缺点也很明显,一旦映射关系需要修改或者增加新的映射关系,就需要手动进行配置,不够灵活。

动态映射是指通过使用网络协议和算法自动将一个IP地址映射到另一个IP地址。

这种方式的优点是配置灵活,映射关系可以根据需要自动变化。

常见的动态映射方式有NAT(网络地址转换)和DNS (域名系统)。

NAT是一种在网络路由器上实现的动态映射方式。

它通过将内部网络的私有IP地址映射为外部网络的公共IP地址,实现内部网络与外部网络之间的通信。

NAT可以有效地解决IPv4地址不足的问题,同时也可以增强网络的安全性。

DNS是一种将域名映射为IP地址的动态映射方式。

在互联网上,我们通常使用域名来访问网站,而不直接使用IP地址。

这是因为域名更容易记忆,而且可以根据需要动态地将域名映射为不同的IP地址。

DNS服务器负责将域名解析为对应的IP地址,使得用户可以通过域名来访问网站。

IP映射原理在实际应用中有着广泛的应用。

例如,当我们在浏览器中输入一个网址时,浏览器会先通过DNS服务器将域名解析为对应的IP地址,然后再与服务器建立连接进行通信。

在企业内部网络中,通过NAT技术可以将内部网络与外部网络隔离,提高网络的安全性。

总结一下,IP映射原理是将一个IP地址映射到另一个IP地址的过程。

它可以通过静态映射和动态映射来实现。

静态映射是通过手动配置实现的,而动态映射则是通过网络协议和算法自动实现的。

二进制数与十进制数转换_概述及解释说明

二进制数与十进制数转换_概述及解释说明

二进制数与十进制数转换概述及解释说明1. 引言1.1 概述本文将会讨论二进制数与十进制数之间的转换方法及相关概念。

在计算机科学中,二进制和十进制是最常用的数字表示方式。

二进制由两个数字0和1组成,而十进制则由0到9的十个数字组成。

了解这两种表示方法以及它们之间的转换过程对于理解计算机编程和数据处理非常重要。

1.2 文章结构这篇文章分为五个主要部分。

首先,我们将介绍二进制数和十进制数的基本概念,包括定义和表示方法。

然后,我们会详细介绍将二进制数转换为十进制数的方法,并提供简单示例和步骤说明以帮助读者更好地理解。

接着,我们会介绍一种称为进位计算法的具体转换方法,并通过演示加深对其原理的理解,并举例说明其在实际应用场景中的意义。

1.3 目的本文旨在帮助读者全面了解二进制数与十进制数之间的转换过程,并能够掌握相关方法和技巧。

通过学习这些知识,读者将能够更好地理解计算机中数字的表示和运算方式,提升对计算机科学的理解和应用能力。

此外,本文还会探讨二进制与十进制转换在计算机科学中的重要性,并提供一些优化或改进建议,以扩展读者的思考。

2. 二进制数与十进制数的基本概念2.1 二进制数的定义和表示方法:二进制数是一种以2为基数的计数系统,只使用两个数字0和1来表示所有的数值。

在二进制中,每一位上的数字称为比特(bit)。

比特代表了数字的位置权值,从右往左依次增加。

例如,一个八位二进制数可以表示0到255之间的整数。

2.2 十进制数的定义和表示方法:十进制是我们常用的计数系统,它使用10个数字0-9来表示所有的数值。

在十进制中,每一位上的数字代表了10的不同次幂,并且从右往左依次增加。

例如,一个三位十进制数可以表示从0到999之间的整数。

总结:二进制和十进制是两种常见而重要的计数系统。

理解它们之间的差异以及如何进行转换对于学习计算机科学和编程非常关键。

接下来我们将详细介绍如何将二进制转换为十进制以及如何将十进制转换为二进制。

2011秋计算机二级考试卷及答案

2011秋计算机二级考试卷及答案
1. 假设192.168.0.1是某个IP地址的点分十进制表示则该IP地址的二进制表示中最高3位一定是 ____________。D A011 B100 C101 D110 2. PC机I/O接口可分为多种类型按数据传输方式的不同可以分为________和并行两种类型。串行 3. MOS型半导体存储器芯片可以分为DRAM和SRAM两种它们之中_____芯片的电路简单集成度高成本较低但速度要相对慢很多。DRAM 4. 广播是一种单点向多点发送信息的单向通信。对 5. 下面关于因特网服务提供商ISP的叙述中错误的是_______。D AISP指的是向个人、企业、政府机构等提供因特网接入服务的公司 B因特网已经逐渐形成了基于ISP的多层次结构最外层的ISP又称为本地ISP CISP通常拥有自己的通信线路和许多IP地址用户计算机的IP地址是由ISP分配的 D家庭计算机用户在江苏电信或江苏移动开户后就可分配一个固定的IP地址进行上网 6. 构建无线局域网时必须使用无线网卡才能将PC机接入网络。对 7. 为了能正确地将IP数据报传输到目的地计算机数据报头部中必须包含________。B A数据文件的地址 B发送数据报的计算机IP地址和目的地计算机的IP地址 C发送数据报的计算机MAC地址和目的地计算机的MAC地址 D下一个路由器的地址 8. OFFICE软件是通用的软件它可以不依赖操作系统而独立运行 。错 9. CPU前端总线是CPU与内存之间传输信息的干道它的传输速度直接影响着系统的性能。对 10. 计算机辅助绘制地图是数字图像处理的典型应用之一。错 11. 下列________不是杀毒软件。B A金山毒霸 BFlashGet CNorton AntiVirus D卡巴斯基 12. 使用圆形插头的鼠标器接口是PS/2接口使用长方形插头的鼠标器接口是USB接口。对 13. 我国颁布的第一个汉字编码国家标准是_______。C A汉字内码扩展规范GBK B汉字编码国家标准GB18030 C信息交换用汉字编码字符集?基本集GB2312 D通用多8位编码字符集UCS 14. 目前计算机中广泛使用的西文字符编码是美国标准信息交换码其英文缩写为___ASCII____。ASCII 15. 确保网络信息安全的目的是为了保证________。C A计算机能持续运行 B网络能高速数据传输 C信息不被泄露、篡改和破坏 D计算机使用人员的人身安全 16. 银行使用计算机和网络实现个人存款业务的通存通兑这属于计算机在______方面的应用。C A辅助设计 B科学计算 C数据处理 D自动控制 17. 以下关于中文Windows文件管理的叙述中错误的是_____________ 。C A文件夹的名字可以用英文或中文 B文件的属性若是“系统”则表示该文件与操作系统有关 C根文件夹根目录中只能存放文件夹不能存放文件 D子文件夹中既可以存放文件也可以存放文件夹从而构成树型的目录结构 18. 在ATM柜员机取款时使用银行卡加口令进行身份认证这种做法称为双因素认证安全性较高。对 19. 由于目前计算机内存容量较大因此分析一个算法的好坏只需考虑其速度的快慢就可以了。错 20. DVD驱动器在读取单面双层DVD光盘时聚焦激光时需使用________种不同的焦距。2 21. 关于PC机主板的叙述中错误的是________。D ACPU和内存条均通过相应的插座槽安装在主板上 B芯片组是主板的重要组成部分所有存储控制和I/O控制功能大多集成在芯片组内 C为便于安装主板的物理尺寸已标准化 D硬盘驱动器也安装在主板上 22. 目前数码相机使用的成像芯片主要有________芯片和CMOS芯片两大类。CCD 23. 下面有关计算机输入输出操作的叙述中错误的是________。D A没有I/O操作计算机就无法与外界包括人、环境、其他计算机等交换信息 B输入操作的任务是将输入设备输入的信息送入内存的指定区域 C输出操作的任务是将内存指定区域的内容送到输出设备进行输出 D所有各种I/O设备使用同一个I/O控制器控制其操作 24. 集成电路是计算机的核心。它的特点是体积小重量轻可靠性高但功耗很大。错 25. 目前大多数以太网使用的传输介质是________和光纤。双绞线 26. 实施逻辑乘运算11001010∧00001001后的结果是________。A A00001000 B11000001 C00001001 D11001011 27. 衡量计算机网络中数据链路性能的重要指标之一是带宽。下面有关带宽的叙述中错误的是_______。A A数据链路的带宽是该链路的平均数据传输速率 B电信局声称ADSL下行速率为2Mb/s其实指的是带宽为2Mb/s C千兆校园网的含义是学校中大楼与大楼之间的主干通信线路带宽为1Gb/s D通信链路的带宽与采用的传输介质、传输技术和通信控制设备等密切相关 28. 下面有关超文本的叙述中正确的是____________。A A超文本节点中的数据不仅可以是文字也可以是图形、图像和声音 B超文本节点之间的关系是线性的、有顺序的 C超文本的节点不能分布在不同的Web服务器中 D超文本既可以是丰富格式文本也可以是纯文本 29. 计算机使用的显示器主要有两类过去使用较多的是CRT显示器现在则是_______显示器。LCD或液晶 30. 高速缓存Cache可以看作主存的延伸与主存统一编址但其速度要比主存高得多。对 31. 移动存储器有多种目前已经不常使用的是______________。D AU盘 B存储卡 C移动硬盘 D磁带 32. 关于微波下列说法中正确的是________。C A短波比微波的波长短 B微波的绕射能力强 C微波是一种具有极高频率的电磁波 D微波仅用于模拟通信不能用于数字通信 33. 在构建计算机局域网时若将所有计算机均直接连接到同一条通信传输线路上这种局域网的拓扑结构属于________。A A总线结构 B环型结构 C星型结构 D网状结构 34. 程序是计算机软件的主体软件一定包含有程序。对 35. 与电子邮件的通信方式不同即时通信是一种以__________方式为主进行消息交换的通信服务。同步通信 36. 单选题中 为求解数值计算问题而选择程序设计语言时一般不会选用___________。C AFORTRAN BC语言 CVISUAL FOXPRO DMATLAB 37. 浏览器可以下载安装一些____________程序以扩展浏览器的功能例如播放flash动画或某种格式的视频等。Plug-in或插入式应用 38. 关于基本输入输出系统BIOS及CMOS存储器下列说法中错误的是________。B ABIOS存放在ROM中是非易失性的断电后信息也不会丢失 BCMOS中存放着基本输入输出设备的驱动程序 CBIOS 是PC机软件最基础的部分包含加载操作系统和CMOS设置等功能 DCMOS存储器是易失性存储器 39. 下面关于Windows XP的虚拟存储器的叙述中错误的是________。B A虚拟存储器是由物理内存和硬盘上的虚拟内存联合组成的 B硬盘上的虚拟内存实际上是一个文件称为交换文件 C交换文件通常位于系统盘的根目录下 D交换文件大小固定但可以不止1个 40. 信息技术是指用来扩展人们信息器官功能、协助人们进行信息处理的一类技术其中________主要用于扩展手、眼等效应器官的功能。D A计算技术 B通信与存储技术 C控制与显示技术 D感知与识别技术 41. 计算机的功能不断增强应用不断扩展计算机系统也变得越来越复杂。一个完整的计算机系统由________两大部分组成。B A硬件系统和操作系统 B硬件系统和软件系统 C中央处理器和系统软件 D主机和外部设备 42. 喷墨打印机中最关键的技术和部件是________。A A喷头 B压电陶瓷 C墨水 D纸张 43. 在个人计算机中带符号二进制整数是采用________编码方法表示的 。C A原码 B反码 C补码 D移码 44. 数字图像的获取步骤大体分为四步扫描、分色、取样、量化其中量化的本质是对每个取样点的分量值进行________转换即把模拟量使用数字量表示。A/D或模数 45. 在计算机网络中只要权限允许用户便可共享其它计算机上的_________、硬件和数据等资源。软件 1. 在关系数据库中关系模式“主键”不允许由该模式中的所有属性组成。 2. 信息系统采用B/S模式时其“页面请求”和“页面响应”的“应答”发生在_____A___之间。 A浏览器和Web服务器 B浏览器和数据库服务器 CWeb服务器和数据库服务器 D任意两层 3. 数据库是按一定的数据模式组织并长期存放在主存储器的一组可共享数据的集合。 4. MPEG-1的声音压缩编码按算法复杂程度分成_3_______个层次分别应用于不同场合MP3只是其中的一个层次。 5. SQL语言提供了SELECT语句进行数据库查询其查询结果总是一个A___。 A关系 B记录 C元组 D属性 6. 以下所列各项中_D_______不是计算机信息系统所具有的特点。 A涉及的数据量很大有时甚至是海量的 B除去具有基本数据处理的功能也可以进行分析和决策支持等服务 C系统中的数据为多个应用程序和多个用户所共享 D数据是临时的随着类型是________B______ 。 A动画 B音频 C视频 D图像 8. 从原理上说买一台数字电视机或在模拟电视机外加一个数字机顶盒即可收看数字电视节目 .错

IPv4地址以及网掩码详解

IPv4地址以及网掩码详解

IPv4地址子网掩码详解01、IP地址二进制、十进制对应IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。

IP 地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。

例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。

我们用的最多而且最熟悉的记数系统就是十进制计数系统了。

二进制中用0和1表示。

有8位二进制,从左到右每个1表示的数字为然后每位相加就得到了255。

如果二进制的某位为0,则此位对应的十进制为0。

案例:192.168.1.11对应的二进制和十进制。

02、IP地址分类IP地址的网络部分称为网络地址,网络地址用于唯一地标识一个网段,或者若干网段的聚合,同一网段中的网络设备有同样的网络地址。

IP地址的主机部分称为主机地址,主机地址用于唯一的标识同一网段内的网络设备(如电脑,笔记本,手机等网络电子设备)。

例如,A类IP地址:10.110.192.111,网络部分地址为10,主机部分地址为110.192.111。

那么如何区分IP地址的网络地址和主机地址呢?最初互联网络设计者根据网络规模大小规定了地址类,把IP地址分为A、B、C、D、E五类。

我们经常用到的是A、B、C三类地址。

IP地址由国际网络信息中心组织(International Network Information Center,InterNIC)根据公司大小进行分配。

过去通常把A类地址保留给政府机构,B类地址分配给中等规模的公司,C类地址分配给小单位。

A类IP地址的网络地址为第一个八位数组,第一个字节以“0”开始。

因此,A类网络地址的有效位数为8-1=7位,A类地址的第一个字节为1~126之间(127留作它用)。

例如10.1.1.1、126.2.4.78等为A类地址。

如何判断两个IP地址是不是处于同一网段?

如何判断两个IP地址是不是处于同一网段?

如何判断两个IP地址是不是处于同⼀⽹段?个⼈理解,欢迎指正。

⼀、要判断两个IP地址是不是在同⼀个⽹段,就将它们的IP地址分别与⼦⽹掩码做与运算,得到的结果-->⽹络号,如果⽹络号相同, 就在同⼀⼦⽹,否则,不在同⼀⼦⽹。

例:假定选择了⼦⽹掩码255.255.254.0,把IP地址和⼦⽹掩码转换为⼆进制,分别将上述两个IP地址分别与掩码做与运算,如下所⽰: 211.95.165.24 11010011 01011111 10100101 00011000 255.255.254.0 11111111 11111111 111111110 00000000 与的结果是: 11010011 01011111 10100100 00000000 211.95.164.78 11010011 01011111 10100100 01001110 255.255.254.0 11111111 11111111 111111110 00000000 与的结果是: 11010011 01011111 10100100 00000000可以看出,得到的结果(这个结果就是⽹络地址)都是⼀样的,因此可以判断这两个IP地址在同⼀个⼦⽹。

⼀、互联⽹的地址 互联⽹上的每个接⼝必须有个唯⼀的Internet地址(也称作IP地址),IP地址长32bit,Internet地址并不采⽤平⾯形式的地址空间,如1,2,3等。

五类不同的互联⽹复制格式如图所⽰: 五类互联⽹IP地址 这些32位的地址通常写成四个⼗进制的数,其中每个整数对应⼀个字节。

这种表⽰⽅法称为"点分⼗进制表⽰法"。

如:192.168.10.11。

① IP地址和⼦⽹掩码相与得到得到⽹络号 ②⼦⽹掩码先取反,在和 IP地址相与得到主机号判断两个Ip是否在同⼀⽹段的⽅法,前提是两个ip的⼦⽹掩码相同;(⼦⽹掩码,ip1,ip2)public static bool CheckIPAndMask(string mask,string ip1,string ip2){string[] maskList=mask.Split('.');string[] ip1List=ip1.Split('.');string[] ip2List=ip2.Split('.');for(int j=0;j<maskList.length;j++){if((int.Parse(ip1List[j])&int.Parse(maskList[j]))!=(int.Parse(ip1List[j])&int.Parse(maskList[j]))){return false;}}return true;}。

ip地址二进制运算

ip地址二进制运算

IP地址十进制转换为二进制基本算法之前回答过一个这样的问题用一个随便的IP举个例子68.25.193.25128,64,32,16,8,4,2,1先记住这几个数字拿68举例子第一位128大于68,写作0,68比64大,相减得4倒数第三位是4,能减去的都写1(包括相减等0),其他的位数写0如下:128,64,32,16,8,4,2,10, 1 , 0, 0,0,1,0,0这个是68的二进制数再说25的,25比16大,之前都大于25,所以16前都是写0,25减16等于9,9继续往下比,大于8,8下面写1,再9减8,还剩1,最后一位就是1128,64,32,16, 8, 4, 2, 10 0 0 1 1 0 0 1看明白了吗?简便算法教你一个简单的方法。

每8位二进制,各位从左到右对应的权值分别是 128,64,32,16,8,4,2,1 。

(即2的n-1次方,n是从右到左当前位的位数)所以随便拿一个256以内的数给你化为二进制,都可以分解为权值相加。

对应的权值的位值为1,其他位为0即可。

比如137,137=128+8+1,所以这几个权值对应的位应该是1,其他位为0,化为二进制即是:1000 1001Ip地址和子网掩码做“与”运算ip地址是标识网络上唯一台计算机的一串32位二进制数。

但是为了便于记忆就给转换成了4组十进制的数,每个用点隔开。

子网掩码与ip地址进行运算都是通过二进制数运算的,它们是进行与运算。

就是1与1=1 1与0=0 0与1=0 0与0=0比如ip地址192.168.1.1(这是三类ip地址,每一类都有固定取值范围),转化成二进制是11000000101010000000000100000001它的子网掩码是255.255.255.0,转换成二进制是11111111111111111111111100000000按上面做与运算得到结果110000001010100000000000至于有什么作用:首先必须的知道子网掩码一定是连续的1和连续的0连续的1代表网络地址,连续的0代表的是主机地址。

1--IP地址

1--IP地址

.
C类地址
网络标识占24位,主机标识占8位;IP地址 范围从192.0.0.0到223.255.255.255;按照 编址方案,其中有 256 个用于私有地址 , 共有 221 -256 (约200万) 个可用的C类网络。每个 C类网络中,除去主机标识各位全为0和全为1 两种情况,可用的 IP 地址有 254 个,即一个 C 类网络可以容纳254个主机。
C类地址:网络标识占24位,其中前三位固定为
110;主机标识占8位。 D类地址:组播地址,IP地址前四位固定为1110 E类地址:保留地址,IP地址前五位固定为11110
.
A B C D
E
.
details
A类地址
网络标识占 8 位,主机标识占 24 位; IP 地址范围从0.0.0.0 到127.255.255.255 ;按 照编址方案,除去网络号各位全为0和全为1以 及一个私有地址 10 三种情况,共有 125 个可 用的A类网络;每个A类网络中,除去主机标识 各位全为0和全为1两种情况,可用的IP地址有 224-2 个,即一个A类网络可以容纳 224-2 个 主机。
.
NetID: 80 NetID: 131.248 NetID: 202.103.96
HostID: 129.216.169 HostID: 122.1 HostID: 168
IP地址分类练习
地址 10.2.1.1 128.63.2.100 201.222.5.64 192.6.141.2 130.113.64.16 256.241.201.10 类别 网络ID 主机ID
网络基础知识1:IP地 址
© 1999, Cisco Systems, Inc.
8-1
IP地址

inet各种函数

inet各种函数

inet_pton & inet_ntop头文件:windows下:#include <WS2tcpip.h>linux下:#include <sys/socket.h>#include <netinet/in.h>#include<arpa/inet.h>函数原型:inet_pton:将“点分十进制” -> “二进制整数”int inet_pton(int af, const char *src, void *dst);这个函数转换字符串到网络地址,第一个参数af是地址族,第二个参数*src是来源地址,第三个参数* dst接收转换后的数据。

inet_pton 是inet_addr的扩展,支持的多地址族有下列:af = AF_INETsrc为指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函数将该地址转换为in_addr的结构体,并复制在*dst中。

af = AF_INET6src为指向IPV6的地址,函数将该地址转换为in6_addr的结构体,并复制在*dst中。

如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT,如果参数af 指定的地址族和src格式不对,函数将返回0。

inet_ntop: 函数原型如下[将“二进制整数” -> “点分十进制”]#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);这个函数转换网络二进制结构到ASCII类型的地址,参数的作用和inet_pton相同,只是多了一个参数socklen_t cnt,他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC。

IP地址简述

IP地址简述

机系统,只要遵守IP协议就可以与因特网互连互通。

正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。

因此,IP协议也可以叫做“因特网协议”。

——IP是怎样实现网络互连的?各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。

IP 协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“IP数据报”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。

——那么,“数据报”是什么?它又有什么特点呢?数据报也是分组交换的一种形式,就是把所传送的数据分段打成“包”,再传送出去。

但是,与传统的“连接型”分组交换不同,它属于“无连接型”,是把打成的每个“包”(分组)都作为一个“独立的报文”传送出去,所以叫做“数据报”。

这样,在开始通信之前就不需要先连接好一条电路,各个数据报不一定都通过同一条路径传输,所以叫做“无连接型”。

这一特点非常重要,它大大提高了网络的坚固性和安全性。

——每个数据报都有报头和报文这两个部分,报头中有目的地址等必要内容,使每个数据报不经过同样的路径都能准确地到达目的地。

在目的地重新组合还原成原来发送的数据。

这就要IP具有分组打包和集合组装的功能。

——在实际传送过程中,数据报还要能根据所经过网络规定的分组大小来改变数据报的长度,IP数据报的最大长度可达65535个字节。

——IP协议中还有一个非常重要的内容,那就是给因特网上的每台计算机和其它设备都规定了一个唯一的地址,叫做“IP地址”。

由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。

——现在电信网正在与IP网走向融合,以IP为基础的新技术是热门的技术,如用IP网络传送话音的技术(即VoIP)就很热门,其它如IP over ATM、IPover SDH、IP over WDM等等,都是IP技术的研究重点。

IP地址十进制与二进制转换

IP地址十进制与二进制转换

IP二进制和十进制互相转换二进制和十进制互相转换为了管理I P地址,有必要非常熟悉二进制和十进制相互转换的过程。

和在十进制数中一位表示它的值是1 0的幂一样,二进制中的1位表示它的值是2的幂,如表3 - 4所示。

换句话说,从左向右,随着位的移动,每一位依次乘以2。

这个表仅仅表示了8位(一个8位位组)。

为扩展这个表,我们只需在左边加入位,每个新位的值是前一个位的2倍。

1. 十进制到二进制的转换为将十进制数转换到二进制数,第一步是找到最高的二进制位。

最高的位意味着具有最大的十进制值的位置。

这个位的十进制值将从数字中减去,然后就确定剩下的最高位。

这个过程不断重复,直至剩下的数为0。

所有中间的位设置为0。

表3-3 默认子网掩码、最大的网络和主机地址类默认子网掩码网络位数网络主机位数主机A类255.0.0.0 8 126 24 16 777 206B类255.255.0.0 16 16 383 16 65 533C类255.255.255.0 2 4 2 097 151 8 2 5 4作为例子,让我们将十进制数1 7 8转换为二进制。

1) 再次查看表3 - 4,可以看见适合1 7 8的最高位是1 2 8 ( 27)。

下一个最高的位是2 5 6 ( 28),它不适合1 7 8。

2) 178-128=5 0。

3) 再次查看表3 - 4,适合5 0的最高位为3 2 ( 25)。

4) 50-32=1 8。

5) 适合1 8的最高位为1 6 ( 24)。

6) 18-16=27) 剩下的部分准确地等于2 ( 21),剩下的数为0。

表3-4 8位位组中的位和相关的十进制值第7位第6位第5位第4位第3位第2位第1位第0位二进制位1 1 1 1 1 1 1 12的幂27 26 25 24 23 22 21 20十进制1 2 8 6 4 3 2 1 6 8 4 2 1表3-5 将十进制1 7 8转换为二进制1 0 11 0 0 1第7位第6位第5位第4位第3位第2位第1位第0位十进制1 2 8 0 3 2 1 6 0 0 2 0二进制位1 0 1 1 0 0 1 0我们刚刚进行的过程总结在表3 - 5中。

ip(点分十进制==二进制整数)之间的转换

ip(点分十进制==二进制整数)之间的转换

ip(点分⼗进制==⼆进制整数)之间的转换linux的套接字部分⽐较容易混乱,在这⾥稍微总结⼀下。

地址转换函数在地址的⽂本表达式和它们存放在套接字地址结构中的⼆进制值进⾏转换。

地址转换函数有四个:其中inet_addr 和 inet_ntoa适⽤于IPv4,inet_pton 和 inet_ntop同时适于⽤IPv4和IPv6。

套接字地址结构分为IPv4套接字地址结构sockaddr_in和IPv6套接字地址结构sockaddr_in6。

其中IPv4的套接字地址结构如下。

IPv4套接字地址结构:(定义在<netinet/in.h>头⽂件中)1struct in_addr{2 in_addr_t s_addr; //3 };45struct sockaddr_in{6 uint8_t sin_len;7 sa_family_t sin_family; //套接字地址结构的地址族8 in_port_t sin_port //TCP或UDP端⼝,⼀般为uint16_t9struct in_addr sin_addr; //IPv4地址,⼀般为uint32_t10char sin_zero[8];11 };说明:POSIX规范只需要这个结构中的3个字段:sin_family、sin_addr和sin_port。

对于符合POSIX的实现来说,定义额外的结构字段是可以接受的。

⼏乎所有的实现都增加了sin_zero字段,所以所有的套接字地址结构⼤⼩都⾄少是16字节。

IPv4地址和TCP或UDP端⼝号在套接字地址结构中总是以⽹络字节序来存储,在使⽤这些字段时,必须要牢记这⼀点。

32位IPv4地址存在两种不同的访问⽅法。

例如:如果serv第⼀位某个⽹际套接字地址结构,那么serv.sin_addr将按in_addr结构引⽤其中的32位IPv4地址,⽽serv.sin_addr.s_addr将按in_addr_t(通常是⼀个uint32_t)引⽤同⼀个32位Ipv4地址。

点分十进制ip地址转换为二进制ip地址[指南]

点分十进制ip地址转换为二进制ip地址[指南]

点分十进制ip地址转换为二进制ip地址[指南] 点分十进制ip地址转换为二进制ip地址#include<stdio.h>#include<math.h> #include<stdlib.h>int legal(char ch){if(ch>=48&&ch<=57)return 2;else if(ch==46)return 1;else return 0; }int legal1(int subnet[]){int flag=1,i=0;do{if(subnet[i]==0)flag=0;if(subnet[i]==1&&flag==0)return 0;i++;}while(subnet[i]!=-1);return 1;}int sum(int subnet[]){int i,sum=0;for(i=0;subnet[i]==1;i++)sum=sum+subnet[i];return sum;}int ip_class(int input_ip1){if(input_ip1>=0&&input_ip1<=127)return 1;else if(input_ip1>=128&&input_ip1<=191)return 2;else if(input_ip1>=192&&input_ip1<=223)return 3;else return 4;}void and(int ch1[],int ch2[],int ch3[],int n){int i;for(i=0;i<8;i++)ch3[i]=ch1[i]*ch2[i];}int tans1(int low,int up,char input_ip[]){int temp=0,n;for(n=up-low-1;n>0;n--)temp=temp+(int((input_ip[low++]-48)))*(pow(10.0,n-1)); return temp;}void tans2(int num,int ip_ch[]){int i=0,j=0;int temp[9];do{temp[i]=num%2;num=(num-num%2)/2;i++;}while(num>=2);temp[i]=num;i++;while(i<8){temp[i]=0;i++;}i--;while(i>=0){ip_ch[j]=temp[i];j++;i--;}}int trans3(int ch[]){int sum=0,i;for(i=0;i<8;i++)sum=ch[i]*pow(2.0,7-i)+sum;return sum;}void output(int output[]){int i=0;while(output[i]!=-1){printf("%d",output[i]);i++;}printf(" ");}void main(void){int i,j=0,again=0,last,flag=0,subnet_id_num=0,n,m; char ch;char input_ip[81],subnet[81];int input_ip1,input_ip2,input_ip3,input_ip4;int subnet1,subnet2,subnet3,subnet4;int subnet_id1,subnet_id2,subnet_id3,subnet_id4; int output_ip1[9],subnet11[9],subnet_id11[9];int output_ip2[9],subnet22[9],subnet_id22[9];int output_ip3[9],subnet33[9],subnet_id33[9];int output_ip4[9],subnet44[9],subnet_id44[9];int temp[9];do{for(i=0;i<81;i++){subnet[i]=27;input_ip[i]=27;}for(i=0;i<9;i++){output_ip1[i]=subnet11[i]=subnet_id11[i]=-1; output_ip2[i]=subnet22[i]=subnet_id22[i]=-1; output_ip3[i]=subnet33[i]=subnet_id33[i]=-1; output_ip4[i]=subnet44[i]=subnet_id44[i]=-1; temp[i]=-1;}i=0;if(again==1)printf("请输入合法的IP:");elseprintf("请输入IP:");again=0;while((ch=getchar())!='\n'){input_ip[i]=ch;i++;}last=i;i=0;while(input_ip[i]!=27){if(legal(input_ip[i])==0){again=1;}if(legal(input_ip[i])==1){temp[j]=i+1;j++;}i++;}if(temp[2]==-1||temp[3]!=-1)again=1;if(again!=1){if(temp[0]>1&&temp[0]<5&&temp[1]-temp[0]>1&&temp[1]-temp [0]<5&&temp[2]-temp[1]>1&&temp[2]-temp[1]<5&&last-temp[2]>0 &&last-temp[2]<4)again=0;elseagain=1;}input_ip1=tans1(0,temp[0],input_ip);input_ip2=tans1(temp[0],temp[1],input_ip);input_ip3=tans1(temp[1],temp[2],input_ip);input_ip4=tans1(temp[2],last+1,input_ip);if(input_ip1>248||input_ip2>255||input_ip3>255||input_ip 4>255)again=1;}while(again==1);tans2(input_ip1,output_ip1);tans2(input_ip2,output_ip2);tans2(input_ip3,output_ip3);tans2(input_ip4,output_ip4);if(input_ip1==0||input_ip1==127)flag=1;if(ip_class(input_ip1)==1&&input_ip2==255&&input_ip3==1& &input_ip4==255)flag=1;if(ip_class(input_ip1)==2&&input_ip3==255&&input_ip4==25 5)flag=1;if(ip_class(input_ip1)==3&&input_ip4==255)flag=1;if(input_ip1==255&&input_ip2==255&&input_ip3==1&&input_i p4==255)flag=1;if(ip_class(input_ip1)==4)flag=2;printf("二进制IP:");output(output_ip1);output(output_ip2);output(output_ip3);output(output_ip4);printf("\n");if(flag==1){printf("所输入IP为特殊IP。

IP地址转换(笔记)

IP地址转换(笔记)

进制数转换:二进制转换成十进制:十进制转换二进制:IP地址表示方式:点分十进制;IP地址分类:A类:第一个字节在1-126;B类:第一个字节在128-191;C类:第一个字节在192-223;D类:第一个字节在224-239;E类:第一个字节在240-255;255.255.255.2550.0.0.0私网IP地址范围:A类:10.0.0.0-10.255.255.255B类:172.16.0.0-172.31.255.255C类:192.168.0.0-192.168.255.255子网掩码:决定一个IP地下的网络位与主机位;要会算一个IP地址的网络位:192.168.1.1255.255.255.0网络位算法:IP地址与子网掩码进行二进制与运算,再转换成十进制;11000000.10101000.00000001.00000001 11111111.11111111.11111111.00000000 11000000.10101000.00000001.00000000 网络位:192.168.1.0练习:计算IP地址为192.168.2.1,子网掩码为255.255.255.0;它的网络位为多少?192.168.2.0子网划分?192.168.1.0/24网络,能够容纳多少台计算机?解:192.168.1.0子网掩码:11111111.11111111.11111111.00000000 255.255.255.0子网数:2^(在点分二进制子网掩码中1与0并存字节1的个数)2^0=1主机数:2^(在点分二进制子网掩码中所有0的个数)2^8=256有效主机数:主机数-2;256-2=254各子网范围:有且仅有一个子网范围:192.168.1.0-192.168.1.255各有效子网范围:192.168.1.1-192.168.1.254192.168.1.0/25网络,能够容纳多少台计算机?解:192.168.1.0子网掩码:11111111.11111111.11111111.10000000 255.255.255.128子网数:2^1=2主机数:2^7=128有效主机数:128-2=126各子网范围:192.168.1.0-172.16.1.127192.168.1.128-192.168.1.255各有效子网范围:192.168.1.1-192.168.1.126192.168.1.129-192.168.1.254192.168.1.0/26网络,能够容纳多少台计算机?解:192.168.1.0点二进制子网掩码:11111111.11111111.11111111.11000000 子网数:2^2=4主机数:2^6=64有效主机数:64-2=62各子网范围:第一子网范围:192.168.1.0-192.168.1.63第二子网范围:192.168.1.64-192.168.1.127第三子网范围:192.168.1.128-192.168.1.191第四子网范围:192.168.1.192-192.168.1.255各有效子网范围:第一有效子网范围:192.168.1.1-192.168.1.62第二有效子网范围:192.168.1.65-192.168.1.126第三有效子网范围:192.168.1.129-192.168.1.190第四有效子网范围:192.168.1.193-192.168.1.254192.168.1.0/27网络,能够容纳多少台计算机?解:192.168.1.0点分二进制子网掩码:11111111.11111111.11111111.11100000 子网数:2^3=8主机数:2^5=32有效主机数:32-2=30各子网范围:第一子网范围:192.168.1.0-192.168.1.31第二子网范围:192.168.1.32-192.168.1.63第三子网范围:192.168.1.64-192.168.1.95第四子网范围:192.168.1.96-192.168.1.127第五子网范围:192.168.1.128-192.168.1.159第六子网范围:192.168.1.160-192.168.1.191第七子网范围:192.168.1.192-192.168.1.223第八子网范围:192.168.1.224-192.168.1.255一个B网络172.16.0.0/16,它能够容纳主机数量?解:172.16.0.011111111.11111111.00000000.00000000 子网数:2^0=1主机数:2^16=65536有效主机数:65536-2=65534各子网范围:有且仅有一个子网:172.16.0.0-172.16.255.255172.16.0.0/17网络,能够容纳多少台计算机?解:172.16.0.0点分二进制子网掩码:11111111.11111111.10000000.00000000子网数:2^1=2主机数:2^15=32768有效主机数:32768-2=32766 段数:定值256/子网数256/2=128各子网范围:第一子网范围:172.16.0.0-172.16.127.255第二子网范围:172.16.128.0-172.16.255.255。

十进制转化为二进制计算方法

十进制转化为二进制计算方法

十进制转化为二进制计算方法一、引言在计算机科学中,二进制是一种重要的数制系统。

在二进制系统中,数字仅由0和1组成,而十进制系统由0到9的十个数字组成。

在计算机中,所有的数据、指令和运算都是以二进制形式表示和处理的。

因此,了解如何将十进制数转化为二进制数是非常重要的。

二、十进制转二进制的基本原理十进制数转化为二进制数的基本原理是通过不断地进行除法和取余运算来实现。

具体步骤如下:1. 将十进制数除以2,得到商和余数。

2. 将商作为下一次除法的被除数,继续除以2,得到新的商和余数。

3. 重复以上步骤,直到商为0为止。

4. 将得到的余数按照从下往上的顺序排列,即为所求的二进制数。

三、举例说明下面以一个具体的例子来说明十进制数转化为二进制数的过程。

例:将十进制数67转化为二进制数。

1. 67除以2,商为33,余数为1。

2. 33除以2,商为16,余数为1。

3. 16除以2,商为8,余数为0。

4. 8除以2,商为4,余数为0。

5. 4除以2,商为2,余数为0。

6. 2除以2,商为1,余数为0。

7. 1除以2,商为0,余数为1。

将得到的余数从下往上排列得到的二进制数为:1000011,即67的二进制表示为1000011。

四、注意事项在十进制转化为二进制的过程中,需要注意以下几点:1. 商为0时,转化结束,得到的余数即为最低位的二进制数。

2. 余数的位置从下往上排列,依次得到每一位的二进制数。

3. 如果十进制数为负数,可以先将其绝对值转化为二进制数,然后再按位取反并加1得到负数的二进制表示。

五、应用举例十进制转化为二进制的方法在计算机科学中有广泛的应用。

下面举几个例子来说明:1. 存储空间的分配:计算机内存中的存储空间通常以字节为单位,每个字节由8位二进制数表示。

因此,了解如何将十进制数转化为二进制数可以帮助我们更好地理解计算机内存的分配原理。

2. IP地址的转化:在计算机网络中,IP地址是用来唯一标识网络中的设备的。

点分十进制转换为十进制

点分十进制转换为十进制

点分十进制转换为十进制点分十进制(Dotted Decimal Notation)是一种用于表示IP地址的方法,它将一个32位的IP地址分为四个8位的部分,每个部分用十进制表示,各部分之间用点号连接。

例如,IP地址192.168.0.1就是一个点分十进制表示的IP地址。

那么,如何将点分十进制表示的IP地址转换为十进制呢?下面我们来详细介绍。

我们需要了解点分十进制的表示方式。

点分十进制表示的IP地址由四个十进制数组成,每个十进制数的取值范围是0到255。

例如,IP地址192.168.0.1中的192、168、0和1都是十进制数。

接下来,我们需要将每个十进制数转换为二进制数。

每个十进制数可以用8位的二进制数表示,例如,十进制数192可以表示为二进制数11000000,十进制数168可以表示为二进制数10101000,以此类推。

然后,我们将四个二进制数拼接在一起,得到一个32位的二进制数,即IP地址的二进制表示。

例如,IP地址192.168.0.1的二进制表示为11000000101010000000000000000001。

我们将32位的二进制数转换为十进制数。

从左到右,每8位为一组,将每组二进制数转换为对应的十进制数。

例如,11000000对应的十进制数为192,10101000对应的十进制数为168,以此类推。

最终,我们得到的十进制数就是点分十进制表示的IP地址的十进制表示。

以IP地址192.168.0.1为例,我们将每个十进制数转换为二进制数得到11000000、10101000、00000000和00000001,然后将这四个二进制数拼接起来得到11000000101010000000000000000001,最后将这个32位的二进制数转换为十进制数,即192.168.0.1。

通过以上步骤,我们可以将点分十进制表示的IP地址转换为十进制。

这种转换方法简单直观,适用于将IP地址用于计算或其他需要使用十进制表示的场景。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
input_ip[i]=27;
}
for(i=0;i<9;i++){
output_ip1[i]=subnet11[i]=subnet_id11[i]=-1;
output_ip2[i]=subnet22[i]=subnet_id22[i]=-1;
output_ip3[i]=subnet33[i]=subnet_id33[i]=-1;
flag=1;
if(ip_class(input_ip1)==2&&input_ip3==255&&input_ip4==255)
flag=1;
if(ip_class(input_ip1)==3&&input_ip4==255)
flag=1;
if(input_ip1==255&&input_ip2==255&&input_ip3==1&&input_ip4==255)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int legal(char ch){
if(ch>=48&&ch<=57)
return 2;
else if(ch==46)
return 1;
else return 0;
again=1;
}
if(again!=1){
subnet_id_num=sum(subnet11)+sum(subnet22)+sum(subnet33)+sum(subnet44);
int output_ip3[9],subnet33[9],subnet_id33[9];
int output_ip4[9],subnet44[9],subnet_id44[9];
int temp[9];
do{
for(i=0;i<81;i++){
subnet[i]=27;
i=0;
while((ch=getchar())!='\n'){
subnet[i]=ch;
i++;
}
last=i;
i=0;
while(subnet[i]!=27){
if(legal(subnet[i])==0){
again=1;
int i;
for(i=0;i<8;i++)
ch3[i]=ch1[i]*ch2[i];
}
int tans1(int low,int up,char input_ip[]){
int temp=0,n;
for(n=up-low-1;n>0;n--)
temp=temp+(int((input_ip[low++]-48)))*(pow(10.0,n-1));
flag=1;
if(ip_class(input_ip1)==4)
flag=2;
printf("二进制IP:");
output(output_ip1);
output(output_ip2);
output(output_ip3);
output(output_ip4);
again=0;
else
again=1;
}
input_ip1=tans1(0,temp[0],input_ip);
input_ip2=tans1(temp[0],temp[1],input_ip);
input_ip3=tans1(temp[1],temp[2],input_ip);
return temp;
}
void tans2(int num,int ip_ch[]){
int i=0,j=0;
int temp[9];
do{ teຫໍສະໝຸດ p[i]=num%2; num=(num-num%2)/2;
i++;
}while(num>=2);
temp[i]=num;
again=0;
else
again=1;
}
if(again!=1){
subnet1=tans1(0,temp[0],subnet);
subnet2=tans1(temp[0],temp[1],subnet);
subnet3=tans1(temp[1],temp[2],subnet);
subnet[i]=27;
for(i=0;i<9;i++){
subnet11[i]=subnet_id11[i]=-1;
subnet22[i]=subnet_id22[i]=-1;
subnet33[i]=subnet_id33[i]=-1;
return 1;
else if(input_ip1>=128&&input_ip1<=191)
return 2;
else if(input_ip1>=192&&input_ip1<=223)
return 3;
else return 4;
}
void and(int ch1[],int ch2[],int ch3[],int n){
subnet44[i]=subnet_id44[i]=-1;
temp[i]=-1;
}
if(again==1)
printf("请输入合法的子网掩码:");
else
printf("请输入子网掩码:");
again=0;
return 1;
}
int sum(int subnet[]){
int i,sum=0;
for(i=0;subnet[i]==1;i++)
sum=sum+subnet[i];
return sum;
}
int ip_class(int input_ip1){
if(input_ip1>=0&&input_ip1<=127)
input_ip4=tans1(temp[2],last+1,input_ip);
if(input_ip1>248||input_ip2>255||input_ip3>255||input_ip4>255)
again=1;
}while(again==1);
tans2(input_ip1,output_ip1);
subnet4=tans1(temp[2],last+1,subnet);
if(input_ip1>255||input_ip2>255||input_ip3>255||input_ip4>255)
again=1;
}
if(again!=1){
tans2(subnet1,subnet11);
while((ch=getchar())!='\n'){
input_ip[i]=ch;
i++;
}
last=i;
i=0;
while(input_ip[i]!=27){
if(legal(input_ip[i])==0){
again=1;
sum=ch[i]*pow(2.0,7-i)+sum;
return sum;
}
void output(int output[]){
int i=0;
while(output[i]!=-1){
printf("%d",output[i]);
i++;
}
printf(" ");
}
if(legal(subnet[i])==1){
temp[j]=i+1;
j++;
}
i++;
}
if(temp[2]==-1||temp[3]!=-1)
again=1;
if(again!=1){
if(temp[0]>1&&temp[0]<5&&temp[1]-temp[0]>1&&temp[1]-temp[0]<5&&temp[2]-temp[1]>1&&temp[2]-temp[1]<5&&last-temp[2]>0&&last-temp[2]<4)
printf("\n");
if(flag==1){
printf("所输入IP为特殊IP。\n");
exit(0);
}
if(flag==2){
printf("所输入IP为D类或者E类IP。\n");
exit(0);
}
do{
j=0;
for(i=0;i<81;i++)
tans2(input_ip2,output_ip2);
tans2(input_ip3,output_ip3);
相关文档
最新文档