進製轉換:
1. 十六進製制與二進位制相互轉化
十六進製制的每一位佔二進位制中的四位,因此需要先定義十六進製制從0~f的二進位制值,即:
string a[16] = ;
下標即十六進製制數,再將每乙個對應的二進位制字串拼起來就可以了。如下例:2. 八進位制與二進位制相互轉化
二進位制中的每三位對應八進位制中的一位,因此也需要先對八進位制中0~7定義其二進位制值,即:
string a[8] = ;這樣其下標就是八進位制的值。
也可以用map定義,這樣就可以直接根據字串的值得到每一位八進位制的值,再拼湊起來就可以了。
3.二進位制轉十六進製制
和二進位制轉八進位制一樣,只不過這裡是每四位取乙個十六進製制,再拼起來就行了。如圖
4. 十進位制轉二進位制
用短除法。每次除以2,把餘數從下到上拼起來,就得到了八進位制的數。d代表十進位制數,b代表八進位制數。
補充:十進位制小數部分轉二進位制,」乘2取整「,小數部分乘以2,取整,再將小數部分乘以2,取整,直到達到題目要求精度。
例:0.68d = ______ b(精確到小數點後2位)
5. 十進位制轉八進位制
用短除法。每次除以8,把餘數從下到上拼起來,就得到了八進位制的數。d代表十進位制數,q代表八進位制數。
補充:十進位制小數部分轉八進位制,」乘8取整「,小數部分乘以8,取整,再將小數部分乘以8,取整,直到達到題目要求精度。
例:28.68d = ______ q(精確到小數點後3位)
6. 十進位制轉十六進製制
同理,略。
7. r進製轉十進位制
這個很簡單了。
7. 十六進製制轉八進位制
①先轉為二進位制。②再轉為八進位制。
提交此題
評測記錄
資源限制
時間限制:1.0s 記憶體限制:512.0mb
問題描述
給定n個十六進製制正整數,輸出它們對應的八進位制數。
輸入格式
輸入的第一行為乙個正整數n (1<=n<=10)。
接下來n行,每行乙個由0~9、大寫字母a~f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。
輸出格式
輸出n行,每行為輸入對應的八進位制正整數。
【注意】
輸入的十六進製制數不會有前導0,比如012a。
輸出的八進位制數也不能有前導0。
樣例輸入239
123abc
樣例輸出
714435274
【提示】
先將十六進製制數轉換成某進製數,再由某進製數轉換成八進位制。
實現**:
#include #include提交此題#include
using
namespace
std;
//儲存16進製制的0~f的二進位制值
string a[16] = ;
//儲存八進位制0~7的二進位制值
unordered_mapmp;
string change16to2(string
s) else
}returnx;}
string change2to8(string
s) }
for (int i = 0; i < s.length(); i += 3
)
returnx;}
string remove0(string
s)
returns;}
intmain()
return0;
}
評測記錄
資源限制
時間限制:1.0s 記憶體限制:512.0mb
問題描述
從鍵盤輸入乙個不超過8位的正的十六進製制數字串,將它轉換為正的十進位制數後輸出。
注:十六進製制數中的10~15分別用大寫的英文本母a、b、c、d、e、f表示。
樣例輸入
ffff
樣例輸出
65535
解決**:
#include #include提交此題#include
using
namespace
std;
mapp;
intmain()
sum += p[a[i]] *sum;
}cout
<< sum <
return0;
}
評測記錄
資源限制
時間限制:1.0s 記憶體限制:512.0mb
問題描述
十六進製制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f共16個符號,分別表示十進位制數的0至15。十六進製制的計數方法是滿16進1,所以十進位制數16在十六進製制中是10,而十進位制的17在十六進製制中是11,以此類推,十進位制的30在十六進製制中是1e。
給出乙個非負整數,將它表示成十六進製制的形式。
輸入格式
輸入包含乙個非負整數a,表示要轉換的數。0<=a<=2147483647
輸出格式
輸出這個整數的16進製表示
樣例輸入
30樣例輸出
1e解決**:
#include usingnamespace
std;
intmain() ;
int n, i = 0
; cin >>n;
if (n == 0
) cout
<< "0"
<
while
(n)
} else
i++;
n /= 16
; }
for (int j = i - 1; j >= 0; j--)
cout
<
cout
<
return0;
}
進製間的相互轉化
原文 進製間的相互轉化 進製間的轉換如下圖所示 由上圖可知,進製間共有12種轉換。下面將逐一介紹這12種轉換方法 1 二進位制轉化為八進位制 原理 1 1位八進位制數可以用3位二進位制數碼表示 2 以小數點為邊界 若小數點左側 即整數部分 不是3的整數倍,則在最左側補零,對小數點右側 即小數部分 應...
進製的相互轉化
我們常用的進製包括 二進位制 八進位制 十進位制與十六進製制,它們之間區別在於數運算時是逢幾進一位。十進位制轉二進位制 方法為 十進位制數除2取餘法,即十進位制數除2,餘數為權位上的數,得到的商值繼續除2,依此步驟繼續向下運算直到商為0為止。二進位制轉十進位制 方法為 把二進位制數按權展開 相加即得...
進製之間的相互轉化
由乙個問題想到的!這個問題是 在windows計算器裡,用programmer方式,選擇dword即32位編碼,然後切換到16進製制,輸入80800006,再轉化成十進位制,會得到乙個負數 2139095034 在c 裡面80800006是乙個uint變數,如何把它變成乙個int的負數?答案 uin...