1. 程式人生 > >怎樣快速對二進位制和十進位制進行互轉化——IP地址規劃與設計總結

怎樣快速對二進位制和十進位制進行互轉化——IP地址規劃與設計總結

       最近一直在看全國計算機三級網路技術這本書,看到第二章的時候,不免會遇到計算機中最常用的進位制轉換問題。什麼IP地址,什麼子網掩碼,什麼網路地址,什麼廣播地址都會用到二進位制和十進位制的相互轉化,而且最常用的是8位二進位制數一組的轉化,這就來總結相互轉化最快的方法。

       首先來認識標準分類的IP地址

       IP地址是由網路號與主機號組成的,長度是32bit,用點分十進位制方法表示,這樣就構成了標準分類的IP地址。常用的A類、B類、CIP地址採用包括“網路號-主機號”兩層結構。通常採用x.x.x.x的方式來表示,每個x8bit,每個x的值為0~255,例如,202.113.29.119

       拿一個圖來具體看看五類標準IP地址:

 

       以上可以看出,IP地址的長度為32位二進位制數,通常我們把它分為4組,每八位二進位制數一組,每組轉化為十進位制數,每組之間用點來連線,這種方法叫做點分十進位制。

       比如一個IP地址為:192.168.128.1

寫成二進位制為:11000000 10101000 10000000 00000001

       一,來看看怎麼快速轉化二進位制數11111111

       1)首先應該記住八個十進位制數字:1286432168421。這八個數字肯定是經常用到的,以上八個數字加起來恰好就為255

       2)二進位制數11111111

每一位對應的數字從左到右恰好是從大到小依次排列:1286432168421

       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

       三,再來看一些連續的10組成的常用的數字(反向的轉化也必須記住)

       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組成,不會出現間隔的10,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類、CIP地址中,如果主機號是全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地址的規劃和設計所考的比較多的題目。

相關推薦

怎樣快速二進位制十進位制進行轉化——IP地址規劃設計總結

       最近一直在看全國計算機三級網路技術這本書,看到第二章的時候,不免會遇到計算機中最常用的進位制轉換問題。什麼IP地址,什麼子網掩碼,什麼網路地址,什麼廣播地址都會用到二進位制和十進位制的相互轉化,而且最常用的是8位二進位制數一組的轉化,這就來總結相互轉化最快的

用FormatDateTimeStrToDateTimeTDateTimeString進行

最近要用到C++ Builder裡的StrToDateTime函式,但在網上沒找到轉化毫秒的方法,經過測試可以用以下程式碼: // 用FormatDateTime將TDateTime轉成String的示例   TDateTime TimeNow = Now();   St

filter 用於請求響應進行預處理操作

filter 用於對請求和響應進行預處理操作 一個 filter 可以針對多個請求做過濾,url mapping 配置為 /* 自定義 filter 需要實現 Filter 介面,預處理工作在 doFilter 中完成 1. 強制轉換 re

loadRunner之引數化,使用者名稱密碼進行引數化,並列印輸出

錄製指令碼,對使用者名稱和密碼進行引數化: Action() { web_url("WebTours", "URL=http://127.0.0.1:1080/WebTours/", "Res

使用JDBCBLOBCLOB進行處理

從網上看到這篇文章,轉過來做為學習用 設有表: create table blobimg (id int primary key, contents blob); 一、BLOB入庫的專用訪問:     1) 最常見於Oracle的JDBC示例中     一般是先通過se

使用ESESC功耗溫度進行模擬

ESESC模擬器的安裝在這篇文章中我介紹了一下舊版本的ESESC模擬器的安裝,接下來我們使用它來進行實驗。在實驗中主要是修改ESESC的頂層配置檔案esesc.conf。 1、功耗 1、使用下面的命令在終端開啟esesc.conf檔案。 vim ese

pandas學習:seriesdataframe進行排序

本問主要寫根據索引或者值對series和dataframe進行排序的方法 程式碼: #coding=utf-8 import pandas as pd import numpy as np #以下實現排序功能。 series=pd.Series([3,4,1,6],inde

Android開發中十六進位制十進位制的相互轉化

最近的開發 Android 專案中要實現使用者自定義顏色,於是就自己利用SeekBar 和 EditText 實現了一個拾色器。 原理也很簡單,就是用四個SeekBar分別代表顏色的四個值:R,G,B,Alpha,每個顏色值都用0-255來表示,最終在轉化為十六進位制顏色值。 十進位

Java Web開發如何在註冊登入時使用者名稱密碼進行驗證?

1 註冊時,對註冊的手機號和密碼驗證: 手機號碼為常用的移動,聯通,電訊號 密碼為數字和字母的組合,切長度不能少於8位 方案 在提交註冊資訊時,用Ajax提交手機號和密碼到Servlet進行驗證 程式

win7下,Ant 配合yuicompressorjscss進行合併、壓縮、拷貝處理

更新:2015/8/13 【NAnt】 NAnt is a .NET-based build tool. In theory it is kind of like make without make's wrinkles. In practice it's a lot

VC SQL 登入對話方塊資料庫使用者名稱密碼進行驗證程式碼!

//此處是通過adoconnect類的物件adoconnect來呼叫自己的成員物件hr = adoconnect.m_pConnection.CreateInstance(_uuidof(Connection));//判斷是否為空if(FAILED(hr)){AfxMessageBox("字元資料為空");r

登入記住使用者名稱密碼時使用者名稱密碼進行加密解密

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="js/jquer

Python sorted字典列表進行排序

1. 按鍵值對對字典進行排序sorted(iterable,key,reverse),sorted一共有iterable,key,reverse這三個引數。    其中iterable表示可以迭代的物件,例如可以是dict.items()、dict.keys()等,key是一

ant中檔案目錄進行復制刪除

4.5 Copy Task:對檔案和目錄進行復制 Copy 任務把一個或多個檔案複製到指定的目錄下。但要注意的是,如果目標目錄下具有同名的檔案,那麼只有當原始檔相對於目標檔案更新時,Ant工具才會複製這個檔案。在Copy任務中可以使用FileSet型別來定義檔案集合。 4.5.1 Copy Task的屬性及

協同OA業務管理進行流程的梳理

流程管理通常會是在企業管理流程複雜或者實施大型ERP軟體之前做梳理,然而企業忽視一個問題協同OA軟體在實施過程中流程管理的優化、改進以及確定同樣對整個軟體實施和推進起到不可或缺的作用。國內知名管理諮詢公司AMT諮詢的流程管理專家針對企業實施協同OA前的流程管理梳理提出以下

二進位制十進位制的轉換

一、十進位制轉換成二進位制 1.1 正整數轉二進位制 要點:除二取餘,倒序排列,高位補零。 方法:將正的十進位制數除以二,得到的商再除以二,依次類推直至商為0或1時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位補零。 注:計算機內部表示數的位元組單位是定長的,如

linux之中檔名檔案進行編碼轉換

shell的內容如下 #!/bin/bash myfunc() {         for x in $(ls)         do                 if [ -f "$x" ];t

C#:二進位制十進位制相互轉換(VS2010窗體+程式碼)

1、工具介面2、二進位制轉為十進位制private void TbtnDenary_Click(object sender, EventArgs e) { if

JUnit學習筆記13---servletfilter進行單元測試2

package junitbook.servlets; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.servlet.ServletException; impor

使用FastJSON Map/JSON/String 進行

Fastjson是一個Java語言編寫的高效能功能完善的JSON庫,由阿里巴巴公司團隊開發的 主要特性主要體現在以下幾個方面: 1.高效能 fastjson採用獨創的演算法,將parse的速度提升到極致,超過所有json庫,包括曾經號稱最快的jackson