一进制转换
在计算机内部,程序、数据和信息均采用 二进制 表示。
1. 不同进制的表示方法
| 进制 | 数字 | 表示方法 |
|---|---|---|
| 十进制(默认) | 0~9 | (365)10 |
| 二进制 | 0 和 1 | (1010)2 |
| 八进制 | 0~7 | (307)8 |
| 十六进制 | 0~9,A~F | (2EF)16 |
2. 非十进制(二、八、十六)转十进制
例 1:将 (123)8 转为十进制
【第一步】按权展开:1×8² + 2×8¹ + 3×8⁰
【第二步】求和:64 + 16 + 3 = 83
例 2:将 (10011)2 转为十进制
【第一步】按权展开:1×2⁴ + 0×2³ + 0×2² + 1×2¹ + 1×2⁰
【第二步】求和:16 + 2 + 1 = 19
例 3:将 (F4)16 转为十进制
【第一步】按权展开:15×16¹ + 4×16⁰
【第二步】求和:240 + 4 = 244
3. 十进制转非十进制(二、八、十六)
例 1:将 (13)10 转为二进制
13÷2=6 余 1 6÷2=3 余 0 3÷2=1 余 1 1÷2=0 余 1
倒取余数:1101
例 2:将 (168)10 转为八进制
168÷8=21 余 0 21÷8=2 余 5 2÷8=0 余 2
例 3:将 (511)10 转为十六进制
511÷16=31 余 15(F) 31÷16=1 余 15(F) 1÷16=0 余 1
4. 十进制和二进制互相转换的结论
【结论二】二进制 1 后面跟 n 个 0:= 2n
例 1:将 (11111111)2 转为十进制
8 个 1 = 2⁸ - 1 = 256 - 1
例 2:将 (31)10 转为二进制
31 = 2⁵ - 1,即 5 个 1
例 3:将 (1000000)2 转为十进制
1 后面 6 个 0 = 2⁶
5. 二进制和八进制互相转换
例 1:将 (11100111)2 转为八进制
从右往左三位分组(不足补 0):011 | 100 | 111
011=3,100=4,111=7
例 2:将 (521)8 转为二进制
5→101 2→010 1→001
6. 二进制和十六进制互相转换
例 1:将 (110110100101)2 转为十六进制
四位分组:1101 | 1010 | 0101
1101=D,1010=A,0101=5
例 2:将 (F7B)16 转为二进制
F→1111 7→0111 B→1011
进制转换练习工具
二原反补码和无符号数
整数在计算机内部采用 补码 的形式表示。
1. 原码(8 位二进制)
- 符号位:最高位(最左边),用于表示整数的正负,其中 0 代表"正",1 代表"负"。
- 数值部分:后 7 位,用于表示整数的数值大小。
| 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
| 符号位 | 数值部分 | ||||||
例 1:求 -3 的原码(8 位)
3 的二进制为 0000011,负数符号位置 1
例 2:求 5 的原码(8 位)
2. 反码(8 位二进制)
- 1)正数的反码等于正数的原码。
- 2)负数的原码符号位不变,数值部分每一位取反(0 变 1,1 变 0)就得到了负数的反码。
例 1:求 -7 的反码(8 位)
-7 原码:1000 0111 → 符号位不变,数值位取反
3. 补码(8 位二进制)
- 1)正数的补码等于正数的原码。
- 2)负数的补码等于负数的反码 + 1(二进制加法)。
例 1:求 -13 的补码(8 位)
原码:1000 1101 → 反码:1111 0010 → 补码(反码+1):1111 0011
例 2:已知八位补码为 11101011,求该补码所对应的十进制整数
符号位为 1,是负数。补码减 1 得反码:1110 1010;数值位取反得原码:1001 0101 = -21
4. 补码的范围
- 1)8 位补码能表示的整数范围为 -128 ~ 127。其中 -128 的补码为 1000 0000,127 的补码为 0111 1111。
- 2)16 位补码能表示的整数范围为 -32768 ~ 32767。其中 -32768 的补码为 1000 0000 0000 0000,32767 的补码为 0111 1111 1111 1111。
5. 无符号数
无符号数,顾名思义没有"符号位",所以无符号数不能表示负数,只能表示 0 和正数。对于无符号数,全部的二进制位都用于表示数值大小。
- 1)8 位无符号数能表示的整数范围为 0~255,其中 255 的无符号数为 1111 1111。
- 2)16 位无符号数能表示的整数范围为 0~65535,其中 65535 的无符号数为 1111 1111 1111 1111。
三ASCII 码
西文字符在计算机内部以 ASCII 码的形式表示,ASCII 码分为 7 版本和 8 版本,其中 7 版本是国际通用版本,有 128 个不同的编码。
| 字符 | 0~9 | A~Z | a~z |
|---|---|---|---|
| ASCII 码(十进制) | 48~57 | 65~90 | 97~122 |
四C 程序的执行过程
- 1)C 语言是一种高级语言,高级语言编写的程序叫作源程序。
- 2)由 C 语言编写的源程序的扩展名为 .c。
- 3)C 的源程序经过编译后生成目标程序(.obj),再经过链接后生成可执行文件(.exe)。
例 1:C 语言的执行过程分为 ______ 和 ______
例 2:文件 "text.obj" 是( )
A. 源程序 B. 可执行程序 C. 目标程序 D. 系统文件
五C 程序的基本结构
- 1)高级语言分为面向过程高级语言和面向对象高级语言,C 语言是一种面向过程语言。
- 2)C 语言有三种基本结构:顺序结构、选择结构和循环结构。
六C 程序的特点
- 1)一个 C 程序是由若干个函数组成,函数是组成 C 程序的基本单位。
- 2)C 程序有且只有一个主函数(main),主函数在程序中的位置可以任意。
- 3)C 程序总是由主函数开始执行,并且结束于主函数。
- 4)每条 C 语句是以分号结束,一行可以写多条语句,一条语句也可以写成多行。
例 1:判断对错(6 小题)
1)C 程序中的主函数只能放在最前面(×)—— 位置任意
2)C 程序总是从第一个函数开始执行(×)—— 从 main 开始
3)C 程序包括过程和函数这两种(×)—— 只有函数
4)编写 C 程序时,每行只能写一条语句(×)—— 一行可写多条
5)函数是 C 程序的基本单位(√)
6)C 程序最少包括一个函数,该函数为主函数(√)
七简单的 C 程序
1. 简单的输出
例 1:第一个 C 程序 Hello World
/* 欢迎来到徐小贱升本课堂 这是你学到的第一个C程序 */ #include <stdio.h> int main() { printf("Hello World"); //调用printf函数将Hello World显示到屏幕上 return 0; }
- printf 函数:C 语言库函数(自带函数),用于输出(显示信息)。
- printf 基本格式:
printf("此处写输出的内容");
例 2:\n 换行
#include <stdio.h> int main() { printf("Hello\nWorld\n"); return 0; }
\n 的作用:换行。输出为两行:Hello / World
例 3:%d 格式控制符
#include <stdio.h> int main() { printf("一年有%d天\n",365); return 0; }
%d:十进制整型的格式控制符。输出:一年有365天
例 4:%% 输出百分号
#include <stdio.h> int main() { printf("一年有%%%d天\n",365); return 0; }
2. 简单的计算
例 1:两数相加
#include <stdio.h> int main() { int a,b,c; a = 2,b = 3; c = a+b; printf("%d加%d的结果为:%d\n",a,b,c); return 0; }
3. 简单的输入
例 1:键盘输入两个数求和(运行时输入 5 7<回车>)
#include <stdio.h> int main() { int a,b,c; scanf("%d%d",&a,&b); c = a+b; printf("%d加%d的结果为:%d\n",a,b,c); return 0; }
- scanf 函数:C 语言库函数(自带函数),用于输入(从键盘上获取)。
- scanf 基本格式:
scanf("输入格式",输入列表); - 注意:变量前要加取地址符
&。输入 5 7 后输出:5加7的结果为:12
八标识符
标识符可以简单的理解为 C 语言中的名字,写程序时由程序开发人员自定义,但是要符合标识符的命名规则,好的标识符会提高程序的可读性。
1. 标识符的命名规则
- 1)由阿拉伯数字、英文字母和下划线组成。
- 2)开头的不能为数字。
- 3)区分大小写(例如 sum 和 SUM 在 C 语言中是两个不同的标识符)。
- 4)不能采用 C 语言中的关键字作为标识符。
2. C 语言关键字(32 个,均为小写)
| auto | short | int | long |
| float | double | char | struct |
| union | enum | typedef | const |
| unsigned | signed | extern | register |
| volatile | void | if | else |
| switch | case | for | do |
| while | goto | continue | break |
| default | static | sizeof | return |
例 1:下列选项中标识符合法的是( )A.$ab B.2a C.int D._123
例 2:下列选项中标识符合法的是( )A.a-b B.#C C.include D.sizeof
例 3:以下有 4 组标识符,其中合法的一组是( )
A. For -sub Case B. 5d Do Sum C. x_5hao IF _1BC D. hello void define
九本章习题(讲义 P9-12)
十习题册第一章题库
补天软考点补充(讲义外高频考点)
C 语言于 1972 年由美国贝尔实验室的 Dennis Ritchie(丹尼斯·里奇)在 B 语言基础上设计,最初用于重写 UNIX 操作系统。C 语言是面向过程的结构化高级语言,兼有"高级语言易用"和"低级语言(汇编)可直接操作硬件"的双重特点,因此也被称为中级语言。
C 语言是编译型语言:源程序必须整体编译、链接生成 .exe 后才能运行,.exe 可脱离 C 开发环境独立运行(易错判断题!)。对比:BASIC、Python 属于解释型语言。编译过程能检查语法错误,但编译通过 ≠ 运行结果正确(可能存在逻辑错误)。
两种注释:/* 多行注释 */ 和 // 单行注释。注释可以出现在程序任何位置,编译时不被检查、不被执行,只起说明作用,可提高可读性。/* */ 不能嵌套。
一个 C 程序有且仅有一个 main 函数;程序从 main 开始执行、在 main 结束,与其他函数位置无关;main 可以调用其他函数,但其他函数不能调用 main。
8 位补码范围 -128~127(-128 无对应原码/反码,是经典陷阱);n 位补码范围 -2n-1 ~ 2n-1-1;n 位无符号范围 0 ~ 2n-1。常考 ASCII:'0'=48、'A'=65、'a'=97,'a'-'A'=32。
%% 输出一个 %;%d 对应十进制整型;scanf 中变量前必须加 &(取地址);输入多个数据时格式串无分隔符则用空格/回车分隔。printf、scanf 是库函数不是语句("属于 C 语句的是 x=x+1;" 这类题常考)。
- 标识符只能含 字母、数字、下划线,首字符不能是数字;含 $、#、-、空格均非法。
- include 不是关键字(是预处理命令),可作标识符;main 不是关键字,Main(大写)是合法标识符且与 main 不同。
- 关键字共 32 个,全部小写;If、FOR、Switch 等大写形式都是合法标识符。
- 调试(debug)= 查错和排错,不是编译/链接。
- C 语言通过函数实现模块化;C 语言本身没有输入输出语句,靠 printf/scanf 等库函数完成。
第一章在天软 C 语言考试中以选择题、填空题、判断题为主,约占总分 8-12 分。重点掌握:① .c→.obj→.exe 流程及各环节名称;② main 函数的 4 个特点;③ 标识符合法性判断(必考 2-3 题);④ 32 个关键字混选;⑤ 进制互化计算(必考);⑥ 补码范围 -128~127。本章所有题库题目建议做到 100% 正确。