计算机进制转换 如题朋友们谁帮详细的讲解下计算机的所有进制转换。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。 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 在计算机中存储数据的最小单位是位(bit),但计算机不会以位作为最基本的存储单位,那样就太复杂了,所以就采用字节(byte)作为最小的存储单位,1byte==8bit.计算机在存储数据时是一个字节也就是八位用来表示一个字符(一个数字、字母或其他符号,汉字就不只是一个字节了)而这些字节都是以二进制数在计算机中存储的,但我们在编程时经常用的是十进制或者八进制、十六进制。所以我先说下他们之间的转换吧!十进制用的最多了,那就从十进制开始:十进制到二进制转换方法:整数部分除以2求出商和余数,在用商继续处于2求出商和余数以此类推直到商为0为止,然后所得结果的余数倒置过来就是二进制整数位,比如:十进制6.6875的整数部分二进制为:6除以2 商3 余03除以2 商1 余11处于2 商0 余1所以6的二进制整数位就等于110(记得余数要倒置过来)好了,那我们在看看小数部分怎么转呢?用小数部分乘以2获得结果的整数部分保留,然后在用此结果的小数部分在乘以2取整,以此类推,直到小数部分为0。十进制6.6875的小数部分二进制为:0.6875乘以2 积1.375 整10.375乘以2 积0.75 整00.75乘以2 积1.5 整10.5乘以2 积1.0 整1所得积的小数部分为0就结束了,0.6875(十)==》0.1011(二)那么十进制的6.6875转换成二进制为110.1011十进制到十六进制转换方法(同上):不过要除以16了。(切记:十进制到某一进制的转换都是除以要转换的进制数)100.728(十六)======》二进制转换(假设我们的二进制就保留三位小数)95除以16 商5 余F5除以16 商0 余5这是整数部分结果为F5再看小数部分:0.728乘以16 积11.648 整B0.648乘以16 积10.368 整A0.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---------》1012---------》0100---------》000520(八)===========》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 = 141111111(二)============》127(127+1(0也表示一个字符)=128正好是ASCII码表所能表示的最大字符数,嘿嘿!)我们看一下规律:不管几进制它到十进制的转换都可以表示为:(n代表被转数的进制位)当前数从末尾开始乘以n的0次方+倒数第二个数乘以n的1次方+--------以此类推。十六进制到十进制的转换:我们继续用上面的公式进行计算:8A(十六)=======》10*16的0次方+8*16的1次方 ======》138更直观的写法应该这样:8A = 8*16 + 10 = 138。八进制到十进制和上面也就一样了,不做演示了。 建议找本 微机原理 看看不过在java中不会涉及到这个东西唯一能涉及到的地方就是 << >> >>>这3个运算符了不过一般情况是用不到这个的所以如果你想搞java的话 理解<< >> >>>就好了如果要进行科学计算的话 BigInteger BigDec... 这2个就好了 推销个帖子,关于float型10进制转2进制的。http://hxraid.javaeye.com/blog/504293 切割字符串 java 监听线程结束 首次发帖,想问下java和GIS开发关系大不大 为什么我用BufferedWriter将字符串写入文件,却没有文件生成呢? 小菜鸟要送分了 同步的问题 Java虚拟机中native方法和Java方法互相调用的机制如何实现? java里要用一些类,为何有些要new有些不要 统一组织.class文件 问个cmd控制台的问题 有经验的高手来看看,详细解说下。 点击后获得鼠标当前坐标并输出在鼠标箭头上方?
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
不会以位作为最基本的存储单位,那样就太复杂了,所
以就采用字节(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。
八进制到十进制和上面也就一样了,不做演示了。
不过一般情况是用不到这个的所以如果你想搞java的话 理解<< >> >>>就好了
如果要进行科学计算的话 BigInteger BigDec... 这2个就好了
http://hxraid.javaeye.com/blog/504293