C学习笔记-预备知识
计算机结构组成
- CPU(中央处理器)(控制器+运算器)
- 存储器(内存+外存)
- 输出设备
- 输入设备
计算机系统组成
- 硬件系统
- 主机
- 中央处理器
- 运算器
- 控制器
- 内存储器
- 只读存储器
- 随机存储器
- 中央处理器
- 外部设备
- 输入设备
- 输出设备
- 外存储器
- 主机
- 软件系统
- 系统软件
- 操作系统
- 语言处理系统
- 系统服务程序
- 数据库管理系统
- 应用软件
- 文字处理软件
- 表格处理软件
- 辅助设计软件
- 实时控制软件
- 系统软件
CPU结构

- 8位寄存器:AL 28
- 16位寄存器:AX 216
- 32位寄存器:EAX 232
- 64位寄存器:REAX 264
程序和指令
- 指令是对计算机进行程序控制的最小单位
- 所有的指令的集合称为计算机的指令系统
- 机器指令格式
操作码 + 操作数
- 机器指令格式
- 程序是为完成一项特定任务而用某种语言编写的一组指令序列
位,字节的概念
位:计算机中是以二进制来存储数据的,也就是0和1,一个二进制位(表示0或1),叫做一位,记为1bit。
字节:8个位(bit)代表一个字节
进制
二进制:逢二进一,只有0和1,用0b前缀标识
八进制:逢八进一,0~7,用0前缀标识
十六进制:逢十六进一,09,AF,用0x前缀标识
二进制转八进制:三个一组,相加连接
二进制转十六进制:四个一组,相加连接
其他进制转十进制(如abcde(每个字母代表一个数))
a * 进制4 + b * 进制3 + c * 进制2 + d * 进制1 + e * 进制0
用相应的位乘以进制的权重次幂,然后相加。
整数在计算机内部的存储方式
所有整数按补码存放
原码
将最高位做为符号位(0代表正,1代表负),其余各位代表数值本身的绝对值
+7的原码是00000111
-7的原码是10000111
+0的原码是00000000
-0的原码是10000000
反码
一个数如果值为正,那么反码和原码相同
一个数如果为负,那么符号位为1,其他各位与原码相反
+7的反码00000111
-7的反码11111000
-0的反码11111111
补码
原码和反码都不利于计算机的运算,如:原码表示的7和-7相加,还需要判断符号位。
正数:原码,反码补码都相同
负数:最高位为1,其余各位原码取反,最后对整个数 + 1
-7的补码:=
10000111(原码)
11111000(反码)
11111001(补码)
+0的补码为00000000
-0的补码也是00000000
计算机中的运算
用补码进行运算,减法可以通过加法实现
7-6=1
7的补码和-6的补码相加:00000111 + 11111010 = 100000001
进位舍弃后,剩下的00000001就是1的补码
-7+6 = -1
-7的补码和6的补码相加:11111001 + 00000110 = 11111111
11111111是-1的补码
语言的层次划分
- 高级语言:A + B
- 汇编语言:ADD AX BX
- 机器语言:0000 0001 1101 1000
主流语言发展历程
机器语言 -> 汇编语言 -> C语言 -> ObjectiveC语言 & C/C++语言 -> Java/C#/PHP/Lua/Python/VB···
C语言的特点
- 优点
- 代码量小
- 执行速度快
- 功能强大
- 编程自由
- 缺点
- 编写代码实现周期长
- 可移植性较差
- 过于自由,经验不足容易出错
- 对平台库依赖较多
C的32个关键字
| auto | break | case | char | const | continue | default | do |
|---|---|---|---|---|---|---|---|
| double | else | enum | extern | float | for | goto | if |
| int | long | register | return | short | signed | sizeof | static |
| struct | switch | typedef | unsigned | union | void | volatile | while |

C的9种控制语句
| if( )else | for( )~ | while( )~ |
|---|---|---|
| do~while( ) | continue | break |
| switch | goto | return |
C的34种运算符
| 算术运算符: | + - * / % ++ – |
|---|---|
| 关系运算符: | < <= == > >= != |
| 逻辑运算符: | ! && || |
| 位运算符: | << >> ~ | ^ & |
| 赋值运算符: | = 及其扩展 |
| 条件运算符: | ?: |
| 逗号运算符: | , |
| 指针运算符: | * & |
| 求字节数: | sizeof |
| 强制类型转换: | (类型) |
| 分量运算符: | **. -> ** |
| 下标运算符: | [] |
| 其它: | ( ) - |
C学习笔记-预备知识的更多相关文章
- C++学习笔记-预备知识
1.1 C++简介 C++融合3种不同的编程方式:C语言代表的过程性语言.C++在C语言基础上添加的类代表的面向对象语言.C++模板支持的广泛编程. 1.2 C++简史 1.2.1 C语言 Ritch ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- SQL 数据库 学习 004 预备知识
数据库 预备知识 我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 如果我们要学习这个数据库,我们需要学习什么知识. 预备 ...
- Python 2.7 学习笔记 基本知识
python是一种解释型的.面向对象的.带有动态语义的高级程序设计语言.本文介绍下python的基本知识. 一.安装 各种操作系统有自己的安装方法,linux系统一般都自带了python的环境.这里不 ...
- Unity3D学习笔记——初级知识
一:Unity欢迎窗口对于初学者来说有很多有价值的信息,值得用户关注,以下将简要介绍这个窗口中的相关内容: 1.Video Tutorials: 提供unity相关的教程 ,包括用户手册 .组件手册以 ...
- three.js学习笔记--基础知识
基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...
- JavaScript学习笔记——基本知识
JavaScript学习的教程来自后盾网 1>JavaScript的放置和注释 1.输出工具 A.alert(); B.document.write(); C.prompt("&quo ...
- SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数
Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下: ...
- java虚拟机JVM学习笔记-基础知识
最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--java虚拟机 媒介:JVM是每一位从事Java开发工程师必须翻越的一座大山! JVM(Java Virtual Machine)JRE ...
随机推荐
- np中的温故知新
1.一维数组中寻找与某个数最近的数 # 一维数组中寻找与某个数最近的数 Z=np.random.uniform(0,1,20) print("随机数组:\n",Z) z=0.5 m ...
- 洛谷P1363 幻想迷宫【dfs】
题目:https://www.luogu.org/problemnew/show/P1363 题意: 有一个地图,起点是S,障碍物用#表示.可以将这个地图不断的在四周重复,问从起点开始是否可以走到无限 ...
- 怎么把word文档粘贴到编辑器里啊?
很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...
- 洛谷P4979 矿洞:坍塌
洛谷题目链接 珂朵莉树吼啊!!! 又是一道水题,美滋滋~~~ $A$操作完全模板区间赋值 $B$操作也是一个模板查询,具体看代码 注意:读入不要用$cin$,会$T$,如果你是大佬,会玄学东西当我没说 ...
- [Luogu] 文艺平衡树(Splay)
题面:https://www.luogu.org/problemnew/show/P3391 题解:https://www.zybuluo.com/wsndy-xx/note/1138892
- Leading and Trailing(LightOJ - 1282)
题解:求一个数的次幂,然后输出前三位和后三位,后三位注意有前导0的情况. 后三位直接用快速幂取模求解. 前三位求得时候只需要稍微变形一下,可以把乘过的结果拆成用科学计数法,那么小数部分只有由前面决定, ...
- codeforces685B
CF685B Kay and Snowflake 题意翻译 输入一棵树,判断每一棵子树的重心是哪一个节点. 题目描述 After the piece of a devilish mirror hit ...
- mac使用jadx逆向app
安装jadx 编译安装 git clone https://github.com/skylot/jadx.git cd jadx ./gradlew dist 然后将build/jadx/bin加入到 ...
- Leetcode题目155.最小栈(简单)
题目描述: 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中.pop() -- 删除栈顶的元素.top() -- 获取栈顶 ...
- leetcode312 戳气球
动态规划 time O class Solution { public: int maxCoins(vector<int>& nums) { nums.insert(nums.be ...