進製相互轉化的演算法公式

2021-08-07 18:12:05 字數 1092 閱讀 8135

二進位制:0,1 逢二進一

八進位制:0-7 逢八進一,用0開頭表示 

十進位制:0-9 逢十進一

十六進製制:0-9,a-f (a :10 b:11 遞增)逢十六進一,0x表示

逢十進一:在生活中,0-9是一位數,9加一就是10(二位數)了,這就叫逢十進一、

逢二進一:1就是最大位,打過1就要進一位,例如:

1+1=10 ,

1+1+1=11。

進製轉換

例如:進製數轉十進位制

1011.01

從小數點始,以0為開始數,小數點左面有四位 對應: 1,1,0,1;小數點右面有兩位 對應:0,1。

如果1011.01是二進位制的,

1011.01 = 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 + 0*2

^-1 + 1*2^-2 

= 11(十進位制)

其中 2為基數。

1*2^3 這裡1代表 1011.01 中的 最高位(個十百千的位) ,2代表 要轉化的進製,3是從小數點起往左計數從0開始,這裡的最高位就是3

0*2^2 這裡0代表 1011.01 中的 第二高位就是百位,2代表 要轉化的進製,2是從小數點起往左計數從0開始,百位為2。

以此類推。

同理,如果1011是八進位制的,那麼 8為基數

1011 =1*8^3 + 0*8^2 + 1*8^1 + 1*8^0 = 521(十進位制)。

ok,那麼十進位制如何轉成二進位制的?

以十進位制的11.875為例 先取出整數 11

11/ 2 = 5 ... 1

5/2 = 2 ... 1

2/2 = 1 ... 0

1/2= 0 ...1

既 (11)10  = (1011)b

再取出小數 以0.875

0.875*2 = 1.75     1

0.75*2 = 1.5         1

0.5*2 = 1              1

既 (0.875)10  = (0.111)b

所以(11.875)10 = (1011.111)b

其中2為基數,進製轉換只需要改變基數就行了。

進製的相互轉化

我們常用的進製包括 二進位制 八進位制 十進位制與十六進製制,它們之間區別在於數運算時是逢幾進一位。十進位制轉二進位制 方法為 十進位制數除2取餘法,即十進位制數除2,餘數為權位上的數,得到的商值繼續除2,依此步驟繼續向下運算直到商為0為止。二進位制轉十進位制 方法為 把二進位制數按權展開 相加即得...

進製之間的相互轉化

由乙個問題想到的!這個問題是 在windows計算器裡,用programmer方式,選擇dword即32位編碼,然後切換到16進製制,輸入80800006,再轉化成十進位制,會得到乙個負數 2139095034 在c 裡面80800006是乙個uint變數,如何把它變成乙個int的負數?答案 uin...

進製間的相互轉化

原文 進製間的相互轉化 進製間的轉換如下圖所示 由上圖可知,進製間共有12種轉換。下面將逐一介紹這12種轉換方法 1 二進位制轉化為八進位制 原理 1 1位八進位制數可以用3位二進位制數碼表示 2 以小數點為邊界 若小數點左側 即整數部分 不是3的整數倍,則在最左側補零,對小數點右側 即小數部分 應...