- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从计算机的核心思想探讨一种进制转换的方法【DOC精选】
【文章标题】从计算机的核心思想探讨一种进制转换的方法
【文章作者】曾健生
【作者邮箱】zengjiansheng1@126.com
【作者QQ】190678908
【作者博客】/newjueqi
/
【编程环境】JDK 1.6.0_01
【作者声明】欢迎转载文章,但转载请保留文章的完整性以及注明文章的出处。
*******************************************************************************
在本人写的博客文章《一种进制转换的特殊方法》(http://)本人从“计算机上所有数据都是二进制数据”这个角度探讨了一种进制转换的方法,但由于这个思想比较难理解,而且举的例子也有一定的难度,所以写了本文作为补充,举了一个简单的八进制转换为16进制的算法(因为本人认为这个例子比较容易理解想要阐述的思想)。如果《一种进制转换的特殊方法》(http://)一文看得不太明白,可先阅读本文。
大家知道,计算机是基于二进制的,所有数据都是以0和1的方式存放的,我们在屏幕上看到的丰富多彩的数据(包括各种声音,图像等)在计算机上都是一大串0和1,同样的道理,我们在屏幕上看到的以各种进制表示的数据在硬盘和内存中都是以二进制的形式存放的。换句话来说,无论我们怎样转换进制,但最后存储在电脑上的都是二进制数,编程实现的进制转换只是改变数据的显示形式,但对在硬盘或内存中的存储的实际数据没有丝毫改变,因为数据在硬盘中永远只有0和1。
虽然以上的一段话讲的都是一些很闲浅的知识点,只要有一点计算机基础的同学都知道,但只有深刻理解上面一段话,才能弄明白本文所阐述的算法思想。
下面开始阐述这个进制转换的思想:
因为所有数据在计算机中都是以二进制的形式存放的,所以用编程实现的进制转换本质是把二进制数据用不同的进制形式显示出来,切记,进制转换只是改变数据的显示形式,在计算机中存放的依然是原来的二进制数据。
下面举一个例子,譬如有以下的语句:
int num=045;
这个语句的作用是把八进制值045赋予给变量num,虽然我们输入的八进制值045,但在计算机中存储的数据实际上是100101,为什么是100101呢?因为在计算中所有的数据都是以二进制的方式存储的,无论我们输入的值是十进制,八进制或者16进制,在计算机中存储的都是二进制数据。
既然各种进制的数据在计算机中都是以二进制的形式存储的,那么在转换进制时就能得到一个等效的进制转换思想:在计算机中所有的M进制转N进制,都等效为二进制转N进制。为什么这样?因为所有的M进制在计算机上都是以二进制的形式存储。
所以用上一篇博文《一种进制转换的特殊方法》(http://)中的程序1(把8进制转16进制)实现进制转换,如果想修改为十进制转16进制,只需要把输入的数据改为十进制的形式,算法根本不需要修改,究其原因是算法的原理是把输入数据转换为二进制数据看待的。
用位操作实现进制转换的算法能同时适用于多种进制的原因是位操作能舍弃各种进制的外相(譬如十进制,八进制或者16进制的表现形式),直指数据在计算机中的本质:二进制,所以针对二进制数据的操作就能适用于多种进制。
下面详细分析一段程序代码例子,这段代码的作用是把八进制数据067转换为10进制数据显示出来,这个算法就是把八进制数据转换为二进制数据处理
//程序2:EightHexToTen.java
/**
*程序用途:通过移位实现八进制转换为10进制
*作者:曾健生
*日期:2009-4-6
*个人博客: /newjueqi
*/
class EightHexToTen
{
public static void main(String args[])
{
int num=067; //输入八进制数据067
int temp=0; //存储临时的数据
int multiple=1; //累积的倍数
int sum=0; //存储最终的结果
while( num0 )
{
temp=num1; //语句①,把二进制位取出来
sum=sum+multiple*temp; //语句②,把这位所表示的十进制数累加
multiple=multiple1; //语句③,累加的数*2
num=num1; //语句④,把下一位移到第一位的位置上
}
System.out.println(sum);
}
}
输出结果为55
算法的过程如下:
当执行完语句int num=067 后,num的值为067,在计算机中实际存储的数
文档评论(0)