怎樣快速對二進位制和十進位制進行互轉化——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
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地址的規劃和設計所考的比較多的題目。
相關推薦
怎樣快速對二進位制和十進位制進行互轉化——IP地址規劃與設計總結
最近一直在看全國計算機三級網路技術這本書,看到第二章的時候,不免會遇到計算機中最常用的進位制轉換問題。什麼IP地址,什麼子網掩碼,什麼網路地址,什麼廣播地址都會用到二進位制和十進位制的相互轉化,而且最常用的是8位二進位制數一組的轉化,這就來總結相互轉化最快的
用FormatDateTime和StrToDateTime對TDateTime和String進行互轉
最近要用到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
使用JDBC對BLOB和CLOB進行處理
從網上看到這篇文章,轉過來做為學習用 設有表: 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學習:對series和dataframe進行排序
本問主要寫根據索引或者值對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 配合yuicompressor對js和css進行合併、壓縮、拷貝處理
更新: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---對servlet和filter進行單元測試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