蓝色河畔

搜索
查看: 2016|回复: 3
收起左侧

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

[复制链接]
发表于 2012-1-17 23:24:00 | 显示全部楼层 |阅读模式

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

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

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 <stdio.h>
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;
}

图像000.jpg

是从字的右边开始计算的。第一次取模计算得到余数1是奇数,那么内存字段最右边位就是1(代表开),因为2的0次方式1,这位置决定整数是否为奇数,如果是0,那么接着2的1次方、2的2次方、3次方、4次方等等就都是偶数了。
为了得到第二位数,我们再把7除以2得到得数奇数3(这次不是求余数了),那么二进制第二个位就填1,依次推算直到得数小于除数。
微软里面配备的程序员计算器有这个功能。你可以复制我的代码编译后对比一下。



汕头人自己的社交APP正式上线了!!!在苹果和安卓手机上的各应用市场搜索 蓝色河畔 方可安装!
回复

使用道具 举报

<

15

主题

422

帖子

-87

小学四年级

Rank: 5Rank: 5

发表于 2012-1-18 13:02:00 | 显示全部楼层
看下来好复杂啊.
汕头人自己的社交APP正式上线了!!!在苹果和安卓手机上的各应用市场搜索 蓝色河畔 方可安装!
回复 支持 反对

使用道具 举报

<

538

主题

7062

帖子

2万

硕士三年级

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

发表于 2012-1-18 15:05:00 | 显示全部楼层
我很诚实的表示看不懂
汕头人自己的社交APP正式上线了!!!在苹果和安卓手机上的各应用市场搜索 蓝色河畔 方可安装!
回复 支持 反对

使用道具 举报

发表于 2012-1-18 19:01:00 | 显示全部楼层
回复 2楼大诺的帖子

算有点复杂吧,其实我说的只是算法,现在贴了说明图应该比较容易理解。
因为想全面分析的话范围太广所以语言还没提及。
这东西靠细致和严谨。
汕头人自己的社交APP正式上线了!!!在苹果和安卓手机上的各应用市场搜索 蓝色河畔 方可安装!
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册河畔

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表