ip地址取值為什麼是0~255 而不是0~127 第一位不應該是符號位嗎?


不是有符號整數,跟整數編碼沒關係,就是簡單的2進位編碼

IPv4由32位二進位組成,平均分為4段,每段8位,中間用點隔開,用十進位表示,稱為點分十進位。(每段的範圍都是0-255)

IPv4分為五類

A類範圍:1-126

B類範圍:128-191 C類範圍:192-223 D類組播地址 E類用於科研A類地址:第1個8位組為網路部分,其餘3個8位組為主機部分 B類地址:前2個8位組為網路部分,後2個8位組為主機部分 C類地址:前3個8位組為網路部分,最後一個8位組為主機部分A/B/C地址用於網路通訊

127網段稱為本地迴環地址,用於測試TCP/IP協議的正確性

ping→127.0.0.1

→127.127.127.127只要是127開始,都是檢測tcp/ip協議的正確性。
這個問題有意思~這麼解釋吧,符號只在數字運算的時候有意義。而IP地址是一個類似於標識符一樣的東西,只是作為一個設備,終端,介面等等的三層地址標記使用,不會用做運算。所以對IP地址來說,有意義的只有能標記的數字多少,而非符號。-128-127共256個數字0-255也是256個數字

兩者表示方法可以表示的IP地址的數量都是256個,可以給256台設備去使用,沒有本質區別。只是大家慣用了0-256的表示方法,約定俗成了而已。


最初設計互聯網路時,為了便於定址以及層次化構造網路,每個IP地址包括兩個標識碼(ID),即網路ID和主機ID。同一個物理網路上的所有主機都使用同一個網路ID,網路上的一個主機(包括網路上工作站,伺服器和路由器等)有一個主機ID與其對應。Internet委員會定義了5種IP地址類型以適合不同容量的網路,即A類~E類。

其中A、B、C3類(如下表格)由InternetNIC在全球範圍內統一分配,D、E類為特殊地址。(來自百度百科)

其次 因為任何的電腦 交換機 路由器 其實都是一台專用的計算機 它的內部都是運行開與關 與 或 非的邏輯門電路

網路設計之初 因為沒考慮到後來的計算機發展會這麼快 會發明手機等等佔用大量ip地址的設備

因此以當時的計算機佔用量預估計 2的32三次方個地址(因為是二進位)就足夠用了

所以 將32個二進位的地址 用點分十進位來劃分就是每8個為一組 每一個八位組 從8個零00000000到8個11111111 再轉換為十進位就是0到255 點分後的每一小塊有255加0共個256個地址 理想 不區分的情況下 如果全部為1就是 255.255.255.255

一開始的百度百科說了為什麼要做ip的網段劃分 然後如果沒有東西去區分界定 給任何一個ip誰知道它是什麼網段的 於是提出了網段和地址的概念

規定A類地址第一個八位組為網路位 其他為主機位 B類地址前兩個八位組為網路位 後邊為主機位 後邊一次類推

然後將整個32和位的地址 通過前面兩個位置0或置1(因為是二進位)要表示A B C D E 五個網段 所以需要2的2次方加0一共5個不同的位來區分網段的範圍)

然後再配合網路位和主機位 比如A類地址 最大表示範圍是11111111八個1 如果第一個為0就剩七個1就2得7次方128 然後這裡的128要減1

因為我們在算的時候以2的n次方來算 但是我們看到的的結果是要將比如置0位後的0111111八位二進位數 轉換為十進位ip地址後得來的 2的n次方的結果和把它轉換為十進位有差別 之間相差1 這裡是存在一個數學關係 好像有一個公式 忘記了 這樣理解吧

而它的本質是 計算機不知道有符號和無符號 它沒有那麼智能 如果我們要置位 要讓計算機理解置位 就必須把置位看做符號位

那麼我們將任何一個n位數從中間砍成兩半 比如八位 如果用16進位來理解 人看二進位太累 一個16進位數等於4個二進位位

所以從0到256用16進位表示分別是

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0100 1011 1100 1101 1110 1111

然後習慣上 我們把正數放在開始 後邊負數 又習慣從0開始說 所以 用符號位為0表示正數 1表示負數 看看上邊的二進位數 開始第一個位是不是從0開始的都是0 所以範圍就是+127~-127 所以0-127就是這麼來的 就是它的網路位 所以A類地址就是 0.0.0.0-127.255.255.255 後邊依次類推

所以你說的0-127是在網路位產生的 第一個二進位位 被置位來區分不同類別網段得到的 而255是主機位的八位二進位 不存在置位所以是0-8換為十進位就是0-255 所以是這樣來的

沒有任何資料規定二進位數第一位必須是符號位


就是想問 ip不是點分十進位嗎 換算二進位是00000000-11111111 但是之前學計算機的時候是說 第一位是代表符號 就是-128~127 為什麼ip的二進位的第一位不是符號而是直接轉換成十進位的呢


推薦閱讀:
相关文章