文档介绍:一、C程序设计基础 1. 二进制基础
•计算机采用二进制的原因
成本更低
运算更简单
硬件上更容易实现
•二、八、十、十六进制数的转换
10进制数转换成2、8、16进制数
整数部分:除基取余法
小数部分:乘基取整法
2、8、16进制数转换成10进制数
按权相加法
2进制数转换成16进制数
四位一组用16进制数代替
16进制数转换成2进制数
每位用四位2进制数代替
•数据在计算机中的存储形式
位、字节和字的概念
内存单元、内存单元地址和指针的概念
•整数的无符号与有符号表示
•原码、反码和补码
原码:一个整数在内存中占二字节,规定高位
字节的最左边一位为最高位,表示数的符号(0
正1负),其余各位代表数本身的绝对值。
如:+8的原码 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
- 8的原码 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
+0的原码 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- 0的原码 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
反码:正数的反码与原码相同,负数的反码规定
符号位不动,其余各位对原码取反
如:- 8的反码 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
- 0的反码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
补码:正数的补码同原码,负数的补码为它的
反码加1
如:- 8的补码 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
- 0的补码 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0的补码 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
用补码表示数时,0的代码是唯一的;
负数补码的补码是它的原码;
用补码表示数使加减法的统一。
1111 1111 1111 1101 (-3)的补码
+ 0000 0000 0000 0001 (+1)的补码
1111 1111 1111 1110 (-2)的补码
•模216原则
假定用16位二进制表示一个整数,则数值范围为:
无符号数:0000000000000000~11111**********
0~ 216 -1 即 0~65535
有符号数:1000000000000000~01111**********
-215 ~ 215 -1 即-32768~32767
如果计算机进行运算时运算结果超出这16位范围,
那么将只取低16位作为结果,例如:
65534 + 3 = 65536+1 无符号有符号
1111 1111 1111 1110 (65534) (-2)
+ 0000 0000 0000 0011 (3) (3)
1 0000 0000 0000 0001 (1) (1)
无符号有符号
1000 0000 0000 0010 (32770)(-32766)
+ 1111 1111 1111 1101 (65533)(-3)
1 0111 1111 1111 1111 (32767)(32767)
无符号 32770+65533 = 65536+32767
有符号-32766-3 = -32769 = -65536+32767
结论:设有两个整数a和b对216求余数(模)所得结
果相同(即两数的二进制表示中低16位完全相同),
那么计算机就认为这两数是同一个数,计算机的这
个特征称为取模原则或模216原则,即任何一个数加
上或减去65536所得结果相同。
2. 程序设计初步
•程序设计语言
机器语言
计算机能直接执行的二进制指令的集合
汇编语言
用“助忆符”代替二进制形式的指令组成的指令集。
计算机不能直接执行汇编语言编写的程序,须经
“汇编程序”“翻译”成机器语言。
高级语言
更接近于人们习惯的自然语言和所用的数学公式。
计算机不能直接执行高级语言编写的源程序,须
翻译成机器语言,主要有两种方式:
一种是编译方式:
“编译程序”把整个源程序翻译成机器语言的目标
程序,以后再执行该目标程序。
另一种是解释方式:
“解释程序”把源程序翻译一句,执行一句,…直
至结束。
•程序设计的含义
算法+ 数据结构= 程序
算法:指问题的求解过程(计算机工作的步骤)
数据结构:指对参与运算的数据的组织和安排
面向过程与面向对象
算法的表示方法
⑴用自然语言
⑵用流程图(传统流程图和N-S流程图)
例如:描述计算1至n累加和的流程。
用自然语言描述如下: 用传统流程图描述如下: