• 进制进制进制~转换


    从刚学计算机就对进制转换有着莫名的反感,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位  (整数小数在末尾)

    不知道我说明白没~

    欢迎指正~~~~

    奋斗中的我,十一就不回家了~哎~~~所以挺闹心的,大家都走了,我也心不在焉。希望明天一切顺利

  • 相关阅读:
    20062007赛季欧洲冠军杯8强对阵情况
    常用的Javascript
    IFRAME 元素 | iframe 对象
    javascript技巧
    javascript部分事件解释
    正则表达式
    c#接口使用方法
    javascript日历控件
    DevExpress DXperience 的本地化(汉化)方法
    运算符总结
  • 原文地址:https://www.cnblogs.com/ldphoebe/p/4850384.html
Copyright © 2020-2023  润新知