In: Computer Science
Implement the following in Classless IP Addressing in C programming using decimal number system (a) Compute First Address, Last address and Number of address from given IP address and mask. Input is given by the user
code:
#include<stdio.h>
#include<math.h>
int main()
{
int f[4],l[4],m,g[4];
int t,z,n[4];
printf("enter the mask:");
scanf("%d",&m);
printf(" enter the ip address:");
scanf("%d",&g[0]);
scanf("%d",&g[1]);
scanf("%d",&g[2]);
scanf("%d",&g[3]);
t=32-m;
z=pow(2,t);//this is for calculating number of ips
if(t<=8)//this is for calculating subnet ip
{
n[0]=g[0];
n[1]=g[1];
n[2]=g[2];
n[3]=g[3]&255<<t;
}
if(t>8&&t<=16)//this is for calculating subnet
ip
{
n[0]=g[0];
n[1]=g[1];
n[2]=g[2]&255<<t-8;
n[3]=0;
}
if(t>16&&t<=24)//this is for calculating subnet
ip
{
n[0]=g[0];
n[1]=g[1]&255<<t-16;
n[2]=0;
n[3]=0;
}
if(t>24&&t<=32)//this is for calculating subnet
ip
{
n[0]=g[0]&255<<t-24;
n[1]=0;
n[2]=0;
n[3]=0;
}
//this is for first ip address
f[3]=g[3]&n[3];
f[2]=g[2]&n[2];
f[1]=g[1]&n[1];
f[0]=g[0]&n[0];
//this is for last ip address
l[0]=(g[0])|!(n[0]);
l[1]=(g[1])|!(n[1]);
l[2]=(g[2])|!(n[2]);
l[3]=(g[3])|!(n[3]);
printf("Number of addresses:%d ",z);
printf("first address:%d . %d . %d . %d
",f[0],f[1],f[2],f[3]);
printf("last address:%d . %d . %d . %d",l[0],l[1],l[2],l[3]);
}
output: