C语言基础一之预备知识(计算机结构组成、计算机系统组成、进制、原码反码补码)

一. 计算机介绍

1.计算机结构组成


冯·诺依曼体系结构冯·诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。
根据冯·诺依曼体系结构构成的计算机,必须具有如下功能:把需要的程序和数据送至计算机中。必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。能够按照要求将处理结果输出给用户。
将指令和数据同时存放在存储器中,是冯·诺依曼计算机方案的特点之一 计算机由控制器、运算器、存储器、输入设备、输出设备五部分组成 冯·诺依曼提出的计算机体系结构,奠定了现代计算机的结构理念。

2.计算机系统组成


3.程序和指令

指令是对计算机进行程序控制的最小单位。
所有的指令的集合称为计算机的指令系统
程序是伪完成一项特定任务而用某种语言编写的一组指令序列。

二.进制

进制就是进位制。比如我们平时使用的是十进制,逢十进一,9+2=11=9+1+1;我们生活中时间计算小时使用的二十四进制,二十四进一,二十四小时过了,就加一天。

1.二进制

计算机底层使用的就是二进制。二进制数据是用0和1两个数码来表示的数。它的基数是2,进位规则是“逢二进一”,借位规则是“借一当二”。
数据在计算中主要是以补码的形式存储的。


十进制整数转化二进制的方法:除以2,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果。

十进制小数转换成二进制:小数部分和2相乘,取整数,不足1取0,每次相乘都是小数部分,顺序看取整后的数就是转化后的结果。

注意:乘的时候只乘小数部分;0.432只有3位,故只需3位;0.432的二进制为:0.011。

2.八进制

八进制,Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。

八进制二进制相互转换
八进制一位对应二进制三位


十进制转换八进制的方法:
用十进制数除以8,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果。


3.十六进制

十六进制(英文名称:Hexadecimal),同我们日常生活中的表示法不一样,它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9,A-F对应10-15。

十六进制一位对应二进制四位


十进制转换十六进制的方法:
用十进制数除以16,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果。


4.C语言表示相应进制数

十进制         以正常数字1-9开头,如123
八进制         以数字0开头,如0123
十六进制       以0x开头,如0x123
二进制         C语言不能直接书写二进制数

案例:
#include <stdio.h>
int main ()
{
        int a = 123;            //十进制方式赋值
        int b = 0123;         //八进制方式赋值, 以数字0开头
        int c = 0xABC;      //十六进制方式赋值
        //如果在printf中输出一个十进制数那么用%d,八进制用%o,十六进制是%x
        printf ( "十进制:%d\n" , a );
        printf ( "八进制:%o\n" , b );       //%o,为字母o,不是数字
        printf ( "十六进制:%x\n" , c );
        return 0;
}



三.计算机内存数值存储方式(原码、反码、补码)

整数的原码、反码、补码都一样。

1.原码

最高位为符号位,0代表正,为1代表负,数值部分就是数值本身绝对值的二进制数。
案例:
十进制数          原码
 +15            0000 1111
 -15            1000 1111
 + 0            0000 0000
 - 0            1000 0000 

2.反码(通常作为 求补码 中间过渡

对于负数,符号位不变,其余位取反。

3.补码:在计算机系统中,数值一律使用补码存储。

对于负数,其补码为它的反码 +1

补码求原码:补码符号位不动,其他为求反,最后整个数+1,得到原码。
案例:
十进制数          原码
 +15            0000 1111(正数原码、反码、补码一样)
 -15            1000 1111
 + 0            0000 0000
 - 0            1000 0000 

4.补码的意义

(1) 补码统一了零的编码
案例:用8位二进制数分别表示+0 和 -0
用原码:
+ 0            0000 0000
- 0            1000 0000 
用反码:
+ 0            0000 0000
- 0            1111 1111
用补码:
+ 0            0000 0000
- 0           10000 0000 (1进位丢失)
所以,补码统一了零的编码。

(2) 两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃
案例:计算9-6
原码计算:

补码计算:


(3)在计算机系统中,数值一律用补码来存储,主要原因是:
统一了零的编码
  • 将符号位和其它位统一处理
  • 将减法运算转变为加法运算
  • 两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值