進位進位進位~轉換

來源:互聯網
上載者:User

標籤:

從剛學電腦器就對進位轉換有著莫名的反感,2進位 8進位 10進位 16進位各種轉換。

下面就說下邏輯地址轉換成物理地址的求法吧

首先,使用者輸入一個16進位的數字cin>>hex>>logic_add;   hex的意思是告訴電腦輸入的數是以16進位方式輸入的

這個時候你要是輸出cout<<logic_add;  你會發現輸出的是把這個16進位的數轉換為10進位以後輸出的結果

cout<<hext<<logic_add;這樣輸出的才是16進位。

經過以上對比,原來電腦不管你是以什麼進位方式輸出的最後都以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<<hex<<c*page_size+b;//16進位的

 就是麼簡單,真是夠了,有些時候特別簡單的問題自己不認真思考真的是不能很好理解。

老師上課講給一個邏輯地址:0A5C  頁面大小1kb=210    

0A5C/2^10   商就是前6位  餘數就是後10位   

這麼理解:0A5C化成2進位一共16位0000 1010 0101 1100 除以2的10次方(2進位位100 0000 0000)就相當於十進位100除以10小數點向前移動1位

那麼2^10  就是二進位的小數點向前移動10位  (整數小數在末尾)

不知道我說明白沒~

歡迎指正~~~~

奮鬥中的我,十一就不回家了~哎~~~所以挺鬧心的,大家都走了,我也心不在焉。希望明天一切順利

進位進位進位~轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.