计算机结构组成

  • 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. redis geo操作

    package club.newtech.qbike.trip.domain.service; import club.newtech.qbike.trip.domain.core.Status;im ...

  2. OSError: cannot open resource(pillow错误处理)

    https://www.jianshu.com/p/c64ae3e9b196 pillow使用备忘之OSError: cannot open resource错误处理 在使用pillow过程中,Pyt ...

  3. 【java设计模式】-00目录

    开篇 [java设计模式]-01设计模式简介 创建型模式: [java设计模式]-02工厂模式(Factory Pattern) [java设计模式]-03抽象工厂模式(Abstract Factor ...

  4. Java并发之同步工具类

    1. CountDownlatch(计数器) 描述: 一个同步工具类,允许一个或多个线程等待其它线程完成操作 类图 通过指定的count值进行初始化,调用await方法的线程将被阻塞,直到count值 ...

  5. Java 多线程:什么是线程安全性

    线程安全性 什么是线程安全性 <Java Concurrency In Practice>一书的作者 Brian Goetz 是这样描述"线程安全"的:"当多 ...

  6. vue 动态渲染数据很慢或不渲染

    vue 动态渲染数据很慢或不渲染 原因是因为vue检测速度很慢,因为多层循环了,在VUE 2.x的时候还能渲染出来,1.x的时候压根渲染不出来.解决方式:在动态改变数据的方法,第一行加上 this.$ ...

  7. java日期大小比较

    之前有面试到两个日期的大小比较方式,现在整理一下几种方法. 例子: String beginTime=new String("2017-06-09 10:22:22");    S ...

  8. Java-NIO 之 Selector 与 Pipe

    关于阻塞与非阻塞:https://www.cnblogs.com/jhxxb/p/11272727.html 一.传统的 IO 流都是阻塞式的 当一个线程调用 read() 或 write() 时,该 ...

  9. MySQL 如何使用show processlist进行过滤

    在使用show processlist的时候,直接使用会显示很多的内容,无法很快找到需要的信息. 如何过滤操作呢? 其实,show processlist展示的内容是从information_sche ...

  10. 【Makefile】Makefile中的赋值符号=、:=、?=、+=

    Makefile中主要有四个赋值符号: = 是最基本的赋值:= 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值 1.“=” “=”赋值:make会将整个makefil ...