计算机结构组成

  • 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学习笔记-预备知识的更多相关文章

  1. C++学习笔记-预备知识

    1.1 C++简介 C++融合3种不同的编程方式:C语言代表的过程性语言.C++在C语言基础上添加的类代表的面向对象语言.C++模板支持的广泛编程. 1.2 C++简史 1.2.1 C语言 Ritch ...

  2. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  3. SQL 数据库 学习 004 预备知识

    数据库 预备知识 我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 如果我们要学习这个数据库,我们需要学习什么知识. 预备 ...

  4. Python 2.7 学习笔记 基本知识

    python是一种解释型的.面向对象的.带有动态语义的高级程序设计语言.本文介绍下python的基本知识. 一.安装 各种操作系统有自己的安装方法,linux系统一般都自带了python的环境.这里不 ...

  5. Unity3D学习笔记——初级知识

    一:Unity欢迎窗口对于初学者来说有很多有价值的信息,值得用户关注,以下将简要介绍这个窗口中的相关内容: 1.Video Tutorials: 提供unity相关的教程 ,包括用户手册 .组件手册以 ...

  6. three.js学习笔记--基础知识

    基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...

  7. JavaScript学习笔记——基本知识

    JavaScript学习的教程来自后盾网 1>JavaScript的放置和注释 1.输出工具 A.alert(); B.document.write(); C.prompt("&quo ...

  8. SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数

    Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下:   ...

  9. java虚拟机JVM学习笔记-基础知识

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--java虚拟机 媒介:JVM是每一位从事Java开发工程师必须翻越的一座大山! JVM(Java Virtual Machine)JRE ...

随机推荐

  1. vue 多层组件相互嵌套的时候 数据源更新 dom没更新 彻底清除组件缓存

    当项目中存在多层组件相互嵌套 组件存在严重缓存时  this.$nextTick(() => { ..... }); 不管用 this.$forceUpdate(); 不管用 只能通过深拷贝浅拷 ...

  2. Elasticsearch: Index template

    Index template定义在创建新index时可以自动应用的settings和mappings. Elasticsearch根据与index名称匹配的index模式将模板应用于新索引.这个对于我 ...

  3. Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Round 1) E. Vasya and Good Sequences(DP)

    题目链接:http://codeforces.com/contest/1058/problem/E 题意:给出 n 个数,对于一个选定的区间,区间内的数可以通过重新排列二进制数的位置得到一个新的数,问 ...

  4. Codeforces Round #586 (Div. 1 + Div. 2) A. Cards

    链接: https://codeforces.com/contest/1220/problem/A 题意: When Serezha was three years old, he was given ...

  5. 【luogu4781】拉格朗日插值

    题目背景 这是一道模板题 题目描述 由小学知识可知,nn个点(x_i,y_i)(xi​,yi​)可以唯一地确定一个多项式 现在,给定nn个点,请你确定这个多项式,并将kk代入求值 求出的值对99824 ...

  6. AcWing:176. 装满的油箱(bfs + dijiskla思想)

    有N个城市(编号0.1…N-1)和M条道路,构成一张无向图. 在每个城市里边都有一个加油站,不同的加油站的单位油价不一样. 现在你需要回答不超过100个问题,在每个问题中,请计算出一架油箱容量为C的车 ...

  7. Codeforces 1051 D.Bicolorings(DP)

    Codeforces 1051 D.Bicolorings 题意:一个2×n的方格纸,用黑白给格子涂色,要求分出k个连通块,求方案数. 思路:用0,1表示黑白,则第i列可以涂00,01,10,11,( ...

  8. antd源码分析之——对话框(modal)

    目录 一.组件结构 1.antd代码结构 2.rc-ant代码结构 3.组件结构 二.antd组件调用关系及功能详解 1.Model.tsx 2.confirm 三.rc-dialog详解 1.e.t ...

  9. jetbrains 2019 激活 error 1653219 解决办法

    我以前用PyCharm按照http://idea.lanyus.com/上的激活码直接可激活. 后来用到IDEA(最新版)了之后激活报错.错误代码为1653219. 后参考博客 解决办法: 把host ...

  10. Go项目的测试代码1(基础)

    最近写了测试代码,整理了一下. 先看看简单的测试代码. // add_test.go ==> 文件名 _test.go 结尾的默认为测试代码文件 package models import ( ...