從剛學計算機就對進製轉換有著莫名的反感,2進製 8進製 10進製 16進製制各種轉換。
下面就說下邏輯位址轉換成實體地址的求法吧
首先,使用者輸入乙個16進製制的數字cin>>hex>>logic_add; hex的意思是告訴計算機輸入的數是以16進製制方式輸入的
這個時候你要是輸出cout<
cout<
經過以上對比,原來計算機不管你是以什麼進製方式輸出的最後都以10進製形式顯示在你面前。
接著輸入你的頁面大小,如果是1kb=1024b=210
寫這個的時候我覺得我自己笨的要死,我在想邏輯位址是16進製制的 頁面大小是10進製的乙個數 他們之間相除用不用進製轉換之類的,我就一直試啊在此期間不停的讓他們進製統一!!!
一瞬間突然想明白了,在計算機裡你無論是以什麼方式什麼進製輸入的最後都變成2進製,不需要你自己轉換進製,最後的商列印出的是10進製(在計算機內部算出的結果是2進製,預設輸出的是10進製)。
哎,所以
cin>>hex>>logic_add;
int a=logic_add/page_size*1024;//頁號
int b=logic_add%page_size*1024;//頁內位址
這就完事了!!!!!!!!
之後你再去查頁表找到對應的物理塊號c
c*page_size+b;//實體地址,十進位制的
cout<
就是麼簡單,真是夠了,有些時候特別簡單的問題自己不認真思考真的是不能很好理解。
0a5c/2^10 商就是前6位 餘數就是後10位
這麼理解:0a5c化成2進製一共16位0000 1010 0101 1100 除以2的10次方(2進製位100 0000 0000)就相當於十進位制100除以10小數點向前移動1位
那麼2^10 就是二進位制的小數點向前移動10位 (整數小數在末尾)
不知道我說明白沒~
歡迎指正~~~~
奮鬥中的我,十一就不回家了~哎~~~所以挺鬧心的,大家都走了,我也心不在焉。希望明天一切順利
進製轉換(任意進製轉換)
a進製轉b進製 思想 a進製轉十進位制 十進位制轉b進製 a進製轉十進位制 include include includeusing namespace std const int p 16 p代表 a進製 int main cout 十進位制轉b進製 include includeusing na...
進製轉換( R進製)
time limit 1 sec memory limit 128 mb 64bit io format lld submitted 3 accepted 1 submit status web board 我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的值 減1...
進製轉換 36進製
題目 進製轉換類 題目描述 將m進製的數x轉換為n進製的數輸出。輸入 第一行,乙個整數t,代表測試資料組數。接著t行,輸入32位二進位制數 輸出 輸出x的n進製表示的數。測試樣例 輸入 10 2 11輸出 注意 注意輸入時如有字母,則字母為大寫,輸出時如有字母,則字母為小寫。剛一看題,懵了,以前 聽...