網路通訊預備篇 進製計數

2021-08-28 05:43:59 字數 2502 閱讀 6152

只要記住你的名字,不管你在世界的哪個地方,我一定會去見你。

——電影《你的名字》

在我們的日常生活中,每個人的名字對應乙個唯一的身(敏)份(感)證(詞)號,在internet上也是一樣,每台主機(host),包括所有的具有上網功能的電子裝置都有ip位址,有了ip位址,這些電子裝置聯網之後,才能正常通訊。

我們的日常生活中常見的十進位制,計算機的執行計算基礎就是基於二進位制來執行,可以簡單的理解為:1代表通電(開),0代表斷電(關),只是用二進位制執行運算,用其他進製表現出來。十六進製制常見於記憶體位址,登錄檔regedit,mac位址等。 而計算機中八進位制比較少見不常用,一般用於某些程式語言。

計算機本身使用的就是二進位制,但是使用起來很不方便的,十六進製制或八進位制可以很好的解決這個問題(換算的時候1位十六進製制數可以用4位二進位制數代替,1位八進位制數可以用3位二進位制數代替)。因為進製越大,數的表達長度也就越短,例如:二進位制數111111111111用十六進製制表示為fff,這樣更簡短,比較節省空間,方便讀,也方便記。

十進位制可以有多位組成,根據十進位制的運算規則:逢10進1,借1當10,從右向左依次為個位、十位、百位、千位、萬位...

(1024)10 = 1×10^3+0×10^2+2×10^1+4×10^0

= 1000+0+20+4

=(1024)10

由此類似,那麼二進位制的運算規則:逢2進1,借1當2,也可以由多位數組成,從右向左分別為1位、2位、4位、8位、16位...

為什麼稱二進位制的位數為1位、2位、4位...?

這其實要從十進位制的角度看二進位制各位數得出的名稱,如下表:

從上表可以看出,當二進位制產生進製時,代表的十進位制數為2、4、8、16、32、64、128...

二進位制雖然只有0和1兩個數字,但是由於數字所處的位置不同,表示的資料也不同

例如:二進位制數 「1101」這個二進位制數共有4位,由3個1和1個0組成,比如數字1所處位置不同,所代表的大小也不同,其所處位置稱作權。從右向左順序各個位表示十進位制的含義:

第乙個1表示:1的個數

第二個0表示:2的個數

第三個1表示:4的個數

第四個1表示:8的個數

(在此可以模擬十進位制1101,由1個1000,1個100,0個10,1個1組成。)

所以,二進位制數1101由1個8,1個4,0個2,1個1組成。按各位的權列出:

(1101)2 = 1×2^3+1×2^2+0×2^1+1×2^0

= 8+4+0+1

=(13)10

這種權展開式可以很方便將二進位制轉換為十進位制。

同理,將八進位制數1024轉換為十進位制數

(1024)8 = 1×8^3+0×8^2+2×8^1+4×8^0

= 512+0+16+4

=(532)10

將十六進製制數2b5f轉換為十進位制數

(2b5f)16 = 2×16^3+b×16^2+5×16^1+f×16^0

= 2×16^3+11×16^2+5×16^1+15×16^0

= 8192+2816+80+15

=(11103)10

由此我們可以得到乙個非十進位制數轉換為十進位制數的自定義公式:

(x)z = xn-1×z^n-1+ xn-2×z^n-2+…+ x1×z^1+ x0×z^0

=(y)10

x表示乙個非二進位制(多位),y表示乙個十進位制數(多位),z表示各進製的基數,n表示位數。

十進位制轉換成二進位制整數就通常採用「除2取餘,逆序排列」的方法。具體做法是用2整除十進位制整數,可以得到乙個商和餘數,再用2去除商,又會得到乙個商和餘數,如此反覆,直到商為0停止。再把先得到的餘數作為二進位制低位有效位,後得到的餘數作為二進位制高位有效位,依次排列。

舉個示例:將十進位制「11」轉換為二進位制

將十進位制11轉換為二進位制數為1011,表示為:(11)10 =(1011)2

同樣的,十進位制轉換為十六進製制,採用「除16取餘,逆序排列」的方法,十進位制轉換為八進位制採用「除8取餘,逆序排列」的方法。

1位十六進製制等於4位二進位制

1位八進位制等於3位二進位制

由於十六進製制和八進位制的基數問題(太大或不太好算),它們的「冪次方」和「除基數取餘」計算起來比較麻煩,為了方便計算,通常建議先把它們轉換位二進位制後再繼續轉換為相應的進製。

QT 網路通訊篇 獲取本機資訊

今天carry對qt網路通訊的http有了一定的理解,可能了解的非常基礎,希望大家多提點意見哈!qt中的網路程式設計是由qt network提供的,它提供了許多類來實現網路應用中的各種功能,下面簡單實現一下獲取本機資訊 1,在ui介面新增如圖控制項 2,在.pro工程檔案中新增 qt network...

C 網路通訊

c 網路通訊 一 伺服器端程式 10.17 1.建立伺服器端socket 1 使用socket類 建立伺服器socket物件 socket objs new socket 引數 使用ipendpoint類設定伺服器ip位址和埠號 或使用dns類 ipaddress serip ipaddress.p...

Winsock網路通訊

winsock網路通訊 這裡我希望和大家 一下winsock網上通訊的程式,由於網際網路的普及,越來越多的程式具有了在網上與其他程式通訊的功能.其實所有這些功能都建立在winsock介面之上,應用程式執行大多數網路通訊的基本物件稱為套介面或軟插口 socket 使用mfc winsocket類新增網...