Click here to Skip to main content
12,897,739 members (55,626 online)
Click here to Skip to main content
Add your own
alternative version


42 bookmarked
Posted 21 Jul 2005


, 21 Jul 2005 CPOL
Rate this:
Please Sign up or sign in to vote.
A simple net calculator for use in networking math calculations
Sample image


A year ago, I started the CISCO CCNA course in my country, and the first module was about NetWorking Basics. The first lessons were about Networking, etc. until NetworkMath came with all these steps of calculating subnets, max number of hosts and so on. It is not hard after you get the hang of it, it is quite easy, but it takes lots of time to do the calculations so I have made a "calculator".

The Steps

This is the main idea to do the calculations. (You really need to know all steps in order to be able to do something later.)

  1. Binary presentation of data
  2. Bits and bytes
  3. Base 10 number system
  4. Base 2 number system
  5. Converting decimal numbers to 8-bit binary numbers
  6. Converting 8-bit binary numbers to decimal numbers
  7. Four-octet dotted decimal representation of 32-bit binary numbers
  8. Hexadecimal
  9. Boolean or binary logic
  10. IP addresses and network masks

Network Math

So let's skip steps 1-9 because you all need to know what they are about and it is not appropriate to discuss them here.
Now let's take a closer look at step 10 - IP addresses and network masks.

When IP addresses are assigned to computers, some of the bits on the left side of the 32-bit IP number represent a network. The number of bits designated depends on the address class. The bits left over in the 32-bit IP address identify a particular computer on the network. A computer is referred to as a host. The IP address of a computer consists of a network and a host part.

To inform a computer how the 32-bit IP address has been split, a second 32-bit number called a subnetwork mask is used. This mask is a guide that determines how the IP address is interpreted. It indicates how many of the bits are used to identify the network of the computer. The subnetwork mask sequentially fills in the 1s from the left side of the mask. A subnet mask will always be all 1s until the network address is identified and then it will be all 0s to the end of the mask. The bits in the subnet mask that are 0 identify the computer or host.

Sample image

Some examples of subnet masks are as follows:

11111111000000000000000000000000 written in dotted decimal as

11111111111111110000000000000000 written in dotted decimal as

A boolean AND of the IP address and the subnet mask produces the network address of this host:


The dotted decimal conversion is which is the network portion of the IP address when the mask is used.

This is the main idea very briefly, for a more complex view we learned about.

The mechanics of Subnetting (with the associated steps) are as follows:

  1. Classes of network IP addresses
  2. Introduction to and reason for subnetting
  3. Establishing the subnet mask address
  4. Applying the subnet mask
  5. Subnetting Class A and B networks
  6. Calculating the resident subnetwork through ANDing

Now I will not explain the whole process because it is very long and... boring and... Now if you want this explained in detail with examples and pictures, you can let me know and I will update the article.

The Project

The project is created in .NET 2003 but can easily be ported in 2005. The screenshot is given above, so it is not a big thing.
I first made this project in Java. After searching the Internet for something familiar, I have came up with nothing, until a friend of mine gave me a link to a JNetTool made by Arthur Ventruba. I downloaded the app and added more features, some bugs were fixed and lots more.
So this .NET app is a port of that tool.

The most important class in the project is IPTool.cs. In there, we have all the "tools" that we need to do the calculations.

I have included the source and the binaries.

To Do List

  1. Add, WhoIS, DNS, PING, TRACEROUTE, PortScan tabs
  2. Fix bugs
  3. Copy to clipboard
  4. Whatever comes up...


English is not my native language, so please excuse me for all the mistakes that I have made...
This is my first article here, so it is not perfect; you are free to make suggestions, remarks, etc.
If you need some information or have any questions, please email me...
I hope to write more and better articles here (I have made lots of useless:) tools using .NET that I want to share).


  • 21st July, 2005: Initial post


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Micu Radu
Web Developer Ipsos Mori
United Kingdom United Kingdom
Now I am a Full stack web developer at Ipsos Mori, dealing with everything web related.

I was a 22 years old student at Computer Science and Mathematics in Romania, Brasov. My first touch with a computer was in 1985 when my father bought a HC80 computer from some guy. Since then computers and programming is my true passion and desire Smile | :)

You may also be interested in...

Comments and Discussions

Questionhow can i find maximum number of host? Pin
Hoàng Thăng Võ1-Mar-16 5:01
memberHoàng Thăng Võ1-Mar-16 5:01 
GeneralVery good code Pin
Mrlooper4-Nov-14 2:27
memberMrlooper4-Nov-14 2:27 
SuggestionGreat code Pin
JDougherty8-Oct-12 7:53
memberJDougherty8-Oct-12 7:53 
QuestionVB 8.0 to VB 10.0 Pin
Marc Christ29-Aug-12 5:19
memberMarc Christ29-Aug-12 5:19 
AnswerRe: VB 8.0 to VB 10.0 Pin
Micu Radu29-Aug-13 3:50
memberMicu Radu29-Aug-13 3:50 
GeneralVery nice! Pin
Newrookie21-Jan-10 13:21
memberNewrookie21-Jan-10 13:21 
GeneralGreat Code Pin
GRRemlin19-Jan-09 10:48
memberGRRemlin19-Jan-09 10:48 
GeneralRe: Great Code Pin
Micu Radu19-Jan-09 22:34
memberMicu Radu19-Jan-09 22:34 
GeneralRe: Great Code Pin
GRRemlin20-Jan-09 3:11
memberGRRemlin20-Jan-09 3:11 
GeneralIt's a beuty Pin
thorssig29-Nov-08 2:43
memberthorssig29-Nov-08 2:43 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.170424.1 | Last Updated 21 Jul 2005
Article Copyright 2005 by Micu Radu
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid