如题朋友们谁帮详细的讲解下计算机的所有进制转换。

解决方案 »

  1.   

    计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。 
    2进制,用两个阿拉伯数字:0、1; 
    8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7; 
    10进制,用十个阿拉伯数字:0到9; 
    16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。 以下简介各种进制之间的转换方法: 
    一、二进制转换十进制 
    例:二进制 “1101100” 
    1101100    ←二进制数 
    6543210    ←排位方法 例如二进制换算十进制的算法: 
            1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20 
            ↑    ↑ 
    说明:2代表进制,后面的数是次方(从右往左数,以0开始) 
    =64+32+0+8+4+0+0 
    =108 二、二进制换算八进制 
    例:二进制的“10110111011” 
    换八进制时,从右到左,三位一组,不够补0,即成了: 
    010 110 111 011 
    然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如: 
    010 = 2 
    110 = 4+2 = 6 
    111 = 4+2+1 = 7 
    011 = 2+1 = 3 
    结果为:2673 三、二进制转换十六进制 
    十六进制换二进制的方法也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为: 
    0101 1011 1011 
    运算为: 
    0101 = 4+1 = 5 
    1011 = 8+2+1 = 11(由于10为A,所以11即B) 
    1011 = 8+2+1 = 11(由于10为A,所以11即B) 
    结果为:5BB 四、二进制数转换为十进制数 
    二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 
    所以,设有一个二进制数:0110 0100,转换为10进制为: 
    计算: 0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 五、八进制数转换为十进制数 
    八进制就是逢8进1。 
    八进制数采用 0~7这八数来表达一个数。 
    八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 
    所以,设有一个八进制数:1507,转换为十进制为: 
    计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 
    结果是,八进制数 1507 转换成十进制数为 839 六、十六进制转换十进制 
    例:2AF5换算成10进制 
    直接计算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997 
    (别忘了,在上面的计算中,A表示10,而F表示15)、 现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。 
    假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式: 1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100  本文来自CSDN博客:http://blog.csdn.net/wangchangchangwen/archive/2008/03/26/2221265.aspx
      

  2.   

    在计算机中存储数据的最小单位是位(bit),但计算机
    不会以位作为最基本的存储单位,那样就太复杂了,所
    以就采用字节(byte)作为最小的存储单位,1byte==8bit.
    计算机在存储数据时是一个字节也就是八位用来表示一个
    字符(一个数字、字母或其他符号,汉字就不只是一个字节了)
    而这些字节都是以二进制数在计算机中存储的,但我们在
    编程时经常用的是十进制或者八进制、十六进制。
    所以我先说下他们之间的转换吧!
    十进制用的最多了,那就从十进制开始:
    十进制到二进制转换方法:
    整数部分除以2求出商和余数,在用商继续处于2求出商和余数
    以此类推直到商为0为止,然后所得结果的余数倒置过来就是二进制
    整数位,比如:
    十进制6.6875的整数部分二进制为:
    6除以2   商3    余0
    3除以2   商1    余1
    1处于2   商0    余1
    所以6的二进制整数位就等于110(记得余数要倒置过来)
    好了,那我们在看看小数部分怎么转呢?
    用小数部分乘以2获得结果的整数部分保留,然后在用此结果的小数
    部分在乘以2取整,以此类推,直到小数部分为0。
    十进制6.6875的小数部分二进制为:
    0.6875乘以2   积1.375  整1
    0.375乘以2    积0.75   整0
    0.75乘以2     积1.5    整1
    0.5乘以2     积1.0     整1
    所得积的小数部分为0就结束了,0.6875(十)==》0.1011(二)
    那么十进制的6.6875转换成二进制为110.1011
    十进制到十六进制转换方法(同上):不过要除以16了。
    (切记:十进制到某一进制的转换都是除以要转换的进制数)
    100.728(十六)======》二进制转换(假设我们的二进制就保留三位小数)
    95除以16   商5   余F
    5除以16    商0    余5
    这是整数部分结果为F5
    再看小数部分:
    0.728乘以16   积11.648  整B
    0.648乘以16   积10.368  整A
    0.368乘以16   积5.888   整5
    后面我们就不用再算了,假设就保留到这
    则:十进制的100.728转换为十六进制位:F5.BA5
    好了,八进制也一样。
    那么现在我们再看看其他进制向二进制的转换
    八进制到二进制(二进制到八进制)的转换:
    520(八)===========》二进制
    当我们随便拿个二进制时要想转成八进制可以这么做:
    1011010从右向左每三位一划分,最后不够用0不上。
    如:上面二进制可转为==》001 011 010
    那么001中每一个数字从左向右按照 当前数字乘以4,下一个数字乘以2,
    最后一个数字乘以1,然后加起来就组成了第一个八进制数,后面的001和010
    也都一样,最后把获得的三个八进制数连接起来就是最终的结果。
    即:001-----------》1
        011-----------》3
        010-----------》2
    所以二进制的1011010转换为八进制就是132。当我算到这时突然就想,这结果虽然是对的(不信了您可以反过来算下)但为什么要这样算了,其实这并不复杂,我们可以仔细想想:1011010这是个二进制数(我操!这不废话吗,嘿嘿!),我们就拿它的后三位来看,010最后一位最大八进制也就是1(别说这也看不出来),那中间那位最大能表示几呀?肯定是2吧,那我们在看最前面那位伙计,它最大又能表示到几呢?很显然后三3个都是0的话它最大也就是4了!而如果它们三个都是1的话正好就是7了,哎呀,这不正好它在加个1就逢到上一位去了。也就是说111再加1逢到上一位的那个1即:1000这个1就代表着一个8了。所以说1011010中我们三个一分的话,后三位是个2吧,而再向前推三个的话,我们就拿1011010中第四个1来看他就代表着一个8了,那么它再继续进两次一就是中间那011即就是3个8了,所以132后面的32就代表着011(3*8)+010(1*2),而1011010中的最高位的那个1就代表着8个8了,也就是说132中的1就是8个8。好了不敢再说了,我现在都快被说蒙住了,嘿嘿!那么反过来八进制的520到二进制也就很容易了
    5---------》101
    2---------》010
    0---------》000
    520(八)===========》101010000(二)十六进制到二进制和上面算法基本一样,不同的是:
    八进制转换是以每三位一划分,从左向右是4,2,1乘以当前数再相加。
    而十六进制转换是以每四位一划分,从左向右是8,4,2,1乘以当前数再相加。
    接着我们再看看其他进制到十进制的转换:
    二进制到十进制的转换:
    这个应该不是很难,就举个简单的例子看看吧!
    1110(二)================>1*2的3次方+1*2的2次方+1*2的1次方+0*2的0次方结果为:
    1110(二)================》8+4+2+0 = 14
    1111111(二)============》127(127+1(0也表示一个字符)=128正好是ASCII码表所能表示的最大字符数,嘿嘿!)我们看一下规律:不管几进制它到十进制的转换都可以表示为:(n代表被转数的进制位)当前数从末尾开始乘以n的0次方+倒数第二个数乘以n的1次方+--------以此类推。
    十六进制到十进制的转换:我们继续用上面的公式进行计算:8A(十六)=======》10*16的0次方+8*16的1次方 ======》138
    更直观的写法应该这样:8A = 8*16 + 10 = 138。
    八进制到十进制和上面也就一样了,不做演示了。
      

  3.   

    建议找本 微机原理 看看不过在java中不会涉及到这个东西唯一能涉及到的地方就是 << >> >>>这3个运算符了
    不过一般情况是用不到这个的所以如果你想搞java的话 理解<< >> >>>就好了
    如果要进行科学计算的话  BigInteger BigDec... 这2个就好了  
      

  4.   

    推销个帖子,关于float型10进制转2进制的。
    http://hxraid.javaeye.com/blog/504293