目录

  • 1 第一章  C语言概述
    • 1.1 第一节  C语言的产生和发展
    • 1.2 第二节  C语言的特点
    • 1.3 第三节  两个简单的C程序
    • 1.4 第四节  C程序的上机步骤
    • 1.5 第五节  Dev-C++介绍
    • 1.6 第六节  VC2010学习版介绍
    • 1.7 第七节  宏定义和文件包含
    • 1.8 本章小结
    • 1.9 本章单元测试
  • 2 第二章  基本数据类型与简单程序设计
    • 2.1 第一节  C语言的基本数据类型
    • 2.2 第二节  常量
    • 2.3 第三节  变量
    • 2.4 第四节  赋值语句
    • 2.5 第五节  数据输出
    • 2.6 第六节 数据输入
    • 2.7 第七节  运算符
    • 2.8 第八节  常用的数学函数
    • 2.9 第九节  顺序结构程序设计
    • 2.10 本章小结
    • 2.11 本章单元测试
  • 3 第三章  分支结构程序设计
    • 3.1 第一节  关系表达式和逻辑表达式
    • 3.2 第二节  if单分支语句
    • 3.3 第四节  if双分支语句
    • 3.4 第五节  if多分支语句
    • 3.5 第六节  case多分支语句
    • 3.6 第七节  分支结构程序设计实例
    • 3.7 本章小结
    • 3.8 本章单元测试
    • 3.9 书中本章习题答案
  • 4 第四章  循环结构程序设计
    • 4.1 第一节  为什么需要循环控制
    • 4.2 第一节  while循环
    • 4.3 第二节  do ... while循环
    • 4.4 第三节  for循环
    • 4.5 第四节  多重循环
    • 4.6 第五节  break语句和continue语句
    • 4.7 第六节  循环结构程序设计实例
    • 4.8 本章小结
    • 4.9 书中本章习题答案
  • 5 第五章 数组
    • 5.1 第一节  一维数组的定义和使用
    • 5.2 第二节  二维数组的定义和使用
    • 5.3 第三节  字符数组的定义和使用
    • 5.4 第四节  数组的应用举例
  • 6 第六章  函数
    • 6.1 第一节  函数的定义
    • 6.2 第二节  函数的调用
    • 6.3 第三节 数组作为函数参数
    • 6.4 第四节  变量的作用域
    • 6.5 第五节 变量的存储类别
    • 6.6 第六节 函数应用实例
  • 7 第七章 结构体和共用体
    • 7.1 第一节  概述
    • 7.2 第二节  定义结构体变量的方法
    • 7.3 第三节 结构体变量的引用
    • 7.4 第四节 结构体数组
    • 7.5 第五节 共用体
    • 7.6 第六节  结构体和共用体应用实例
  • 8 第八章 指针
    • 8.1 第一节  指针的概念
    • 8.2 第二节  指向简单变量的指针
    • 8.3 第三节 指向数组的指针变量
    • 8.4 第四节  指向字符串的指针变量
    • 8.5 第五节 指针作为函数参数
    • 8.6 第六节  指向结构体的指针变量
    • 8.7 第七节 指针应用实例
  • 9 第九章  文件
    • 9.1 第一节  文件概述
    • 9.2 第二节  文件的打开和关闭
    • 9.3 第三节 文件的读/写函数
    • 9.4 第四节  文件定位函数
    • 9.5 第五节  文件应用实例
  • 10 附录
    • 10.1 附录A  基本字符ASCII码表(0~127)
    • 10.2 附录B  运算符优先级表
    • 10.3 附录C 常用C库函数表
    • 10.4 附录D  编译常见错误提示
    • 10.5 附录E  常见C语言英语单词
    • 10.6 附录F  如何从十进制转换为二进制
    • 10.7 附录G  如何把二进制数转化为十进制数
    • 10.8 附录H  什么是编译器
    • 10.9 附录I  与编译器相关的几个知识点
附录F  如何从十进制转换为二进制

如何从十进制转换为二进制

十进制(以十为基础进位)数系的每一个位值有十个可能的值(0123456789)。相反二进制(以二为基数进位)数系只有两个可能的值,即01[1] 二进制系统是电子计算机的基本语言,真正的电脑程序员应了解如何将数字从十进制转换为二进制。下面我们将介绍几个简单的转换方法。

方法一  余数短除法除以二

         

1明确问题。举个例子,我们现在是要将一个十进制数字15610转换成二进制数字。先将这个十进制数作为被除数写在一个倒着的长除法的符号里。把目标数系的基数(在这里二进制是“2”)作为除数写在这个除法符号的外面。

· 用这个方法将计算过程可视化会更方便理解,因为整个计算过程只需将数字一直除以2

· 为了防止转换前后发生混淆,建议将数系的基数写作每个数字的脚注形式。在本例中,十进制数字的脚注为10,二进制数字的脚注为2

         

2进行除法运算。把结果的整数部分(商数)写在长除法符号的下面,然后把它的余数(0 1)写在被除数的右边。[2]

· 我们现在是以2为除数,因此得出的商为偶数,则余数为0;如果得出商为奇数,则余数记为1

 

3一直往下继续除,直到商为0为止。把每一个新的商数除以二,然后把余数写在被除数的右边。直到商数为0为止。

 

4写出新的二进制数字。从最下面的余数开始,按顺序读到最上面。本例中,你会得到10011100。这就是十进制数字156的二进制形式。或者,我们可以以脚注等式的形式表达,即:15610 = 100111002

· 活用这个方法可以将所有十进制数字转换成任何进制表达。除数为2是因为我们最终想得到的以2为基数的数(即二进制数值) 。如果最终想得到其他数系的数字,用目标数系的基数代替这个方法里二进制的基数2 就可以了。例如,要得到基数为9的数,就用9来代替2作为除数 。最终的结果就是目标数系的数字表达。

 

方法二  降二次幂及减法混合运算

 

1列表。将以2为底数的幂函数以表格形式从右到左列出来。从20开始,201。指数加一递增。列表直至函数值最接近需要计算的十进制数字为止。比如说,我们现在要将十进制数字15610转换为二进制。

 

2找出最合适的幂函数值。找出小于且最接近需计算数字的幂函数值。在本例中,128是小于156的、以2为底数的幂函数值中最大的数值。所以在二进制列表128的下方写上1。然后用156减去128,得出28

 

3继续计算。刚刚得出新得数28继续进行比较计算,看看哪一个幂函数值小于28。函数列表的下一个数字为6464大于28,所以在64下方写上0。如此类推,看看那个数字小于28

 

4能减的数字记为1本例中,6448都不能被28减,得出正数。16可以被28减,得出128也能被12减,得出正数,所以在168下方都写上1。现在的差为4

 

5继续减法运算,直到列表的最后。记住在能被差减得出正数的数字下面记录为1,不能被减的数字下面记录为0

 

6写出二进制答案。得出的二进制数值就是列表下记录的数字排列。你应该能得出10011100。这就是十进制数字156的二进制表达。或者,我们可以以脚注等式的形式表达,即:15610 = 100111002

· 多次反复使用这个方法,你就能基本记住以2为底数的幂函数的值。就可以跳过第一步列表的步骤了。

 

小提示

· 操作系统里安装好的计算器也可以用作十进制和二进制之间的转换,但作为一个程序员,能清楚地了解这个转换的原理会更好 。点击查看然后选择 程序员就可以看到转换器了。

· 反过来转换,从二进制转换为十进制通常更容易入门。

· 多练习。试着转换十进制数 178106310,和 810。你会分别得到以下二进制答案 1011001021111112,和10002。试着转换209102510,和 24110,会得出110100012110012,和111100012