服务热线:0754 - 88943210
2024年汕头春季网络招聘会
  • 0

酒后发点计算机知识,看懂你就是内行人

啤酒不好吃 发表于 2012-1-17 23:34:00 | 显示全部楼层 |阅读模式
4113 0

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?注册河畔 |

x
我们考虑编写一个程序,该程序将一个整数转换成二进制形式显示。那么什么是二进制呢?例如456在十进制下表示为4×10^2+5*10^1+6*10^0(符号^是平方的意思,例如10^1和10^2分别表示10的1次方和10的2次方),而二进制数101的意思是1*2^2+0*2^1+1*2^0,还有就是二进制中只有使用0和1来表示。PS:这就是为什么类似《黑客帝国》这样关于科技的电影宣传海报常常封面布满这两个数字,因为最早的计算机语言是机器代码,而古老的令人望而生畏机器代码就是使用“0”和“1”来给计算机下达指令的,使用这种语言来编写程序是相当耗时和艰难的任务,这也就是为什么5、6十年代懂计算机技术的人凤毛麟角,现在却多如牛毛,其中除去那时候计算机规模过于庞大,(一台计算机的占地面积就要100多平方米且性能还不及现在2000块组装的电脑),只用于科研和国家机构而普通人难以拥有之外,还有一点就是那时候的语言太难,一个普通的小任务就需要一支专业的团队来支撑,可以这样说,机器代码就是计算机语言的长老和权威,不过谢天谢地,时代在进步,现今计算机人员已经基本和枯燥的0和1say goodbye了。现在不为海报上的0和1感到困惑了吧。呵呵,其实我读高一的时候和女朋友去艺都看《矩阵革命》就被她问过这个问题,那时候我还傻糊傻糊的哪知道那么多,假如时光倒流,我会温柔地地亲吻她的小脸蛋,向美丽的她解释清楚。当然,以上PS部分是题外话,只是想让你了解这方面的知识背景,天知道你看了之后突然感兴趣从而深入研究,进而步入这一领域,再进而诱导更多的汕头年轻人进军先进领域推动社会的发展呢?好了,我们将思路回归到开头的问题。解决十进制转二进制问题得设计出一个一个算法。例如,如何得到7的二进制表示?因为奇数的二进制最后一位是1,而偶数的最后一位是0,所以可以通过计算7%2(%是取模符号,也就是7除以2得到的余数)得出7的二进制最后一位是0或者是1,进一步地,我们需要计算下一个数字,现在再把7除以2,如果得数为偶数那么这个数字就是零,如果数值为奇数那么这个数字就是1,那么什么时候终止这种技术呢?答案就是只要被2除的得数大于等于2,那么就需要一个二进制位进行表示,所以仅当被2除的得数小于2时才停止该计算。好了,现在算法的逻辑规则理清了,那么就来使用递归编写程序:#include void to_binary(unsigned long n);int main(void){    unsigned long number;    printf("Enter an integer (q to quit):\n");    while (scanf("%ul", &number) == 1)    {        printf("Binary equivalent: ");        to_binary(number);        putchar('\n');        printf("Enter an integer (q to quit):\n");    }    printf("Done.\n");   return 0;}void to_binary(unsigned long n)   /* 递归函数 */{    int r;    r = n % 2;    if (n >= 2)       to_binary(n / 2);    putchar('0' + r);    return;}其实windows7系统配备的程序员计算器就是运用这个原理来的,具体是使用哪种语言我就不了解了。如果感兴趣就复制我的代码到编译器编译一下吧。如果您输入整数9,程序将显示1001,输入255侧输出11111111,以此类推……。
汕头全民爆料请 下载安装蓝色河畔App即可!
回复

使用道具 举报

全部回复(0)
您需要登录后才可以回帖 登录 | 注册河畔 |

关于我们|帮助中心|法律声明|诚聘英才|联系我们|手机版|小黑屋|Archiver|APP下载|

Copyright © 2002-2023, Hepan.com Cloud.    Powered by hepan.com Discuz!X3.4    粤B2-20080418 粤ICP备11103827号

违法和不良信息举报电话:0754-88943210 举报邮箱:help@hepan.com 粤公网安备 44050702000900号

GMT+8, 2024-3-29 15:40