2024/8/10第一次记录

记录重学C&C++(从面向过程到面向对象的过程)

C:

介绍:

是一种高级语言,在此基础上发展出C++和C#。用C语言编程的操作步骤:
Alt

第一章C语言概述:

1.1数制及相互转换:

每一种数制就是一种数字系统。
数字系统的由来:
随着记录数字不断变大,远古时代的结绳计数,在石板上画线等方式不在适用,随即慢慢发明出了非位置化数字系统【同样的数字在不同位置上的含义相同,由不同位置上的数字相加减而成】(罗马数字) 和 位置化数字系统【同样的数字在不同位置上的含义不同】(二进制|八进制|十进制|十六进制)
对于人类来说,十进制最为方便。
对于计算机来说,0,1表示电流的关开,二进制最为方便。
由此需要进制转换,将对于人类理解方便的内容变为计算机易懂的语言。

转换方法(通法):
把一个 k 进制的数转换成 r 进制(k≠10,r≠10),一般是以十进制数作为中间过渡。即先把k进制数转换成十进制,再把十进制数转换成 r 进制数。
step1. k 进制数转换成 十进制数:
​​Alt
Alt
step2.将十进制数转换为 r 进制数:
​​​​​​整数部分:短除法(又叫除 r 取余,逆序取余):把十进制数连续除以 r ,知道商为0为止,记录每次的商和余数,没有余数则记余数为0。已记录余数相反次序依次写出各个余数,就是对应的二进制数。
Alt
小数部分:乘 r 取整 ,顺序取整:纯小数部分连续乘 r 。每次把当前纯小数乘以 r ,整数部分(十进制)换算成对应的 r 进制数(短除法),分别记载整数部分的个位和纯小数部分,。如果当前纯小数部分是0则计算完成,按得到的整数部分的原有次序写出各个 r 进制数即可。但是如果纯小数部分一直不是0,则指定小数点后取n位,即做了n次乘法计算后终止。
Alt

特殊情况:二进制和十六进制,二进制和八进制之间的转换(不需要做两次)

以二进制转换为十六进制为例:
(1)把二进制数从小数点起分别向左对整数部分和向右对小数部分每4位分成一组,最左边一组不足4位左补零,最右边一组不足4位右补零。
(2)把每组4位的二进制数转换成1位十六进制数
(3)从左到右依次写出结果,小数点保留原位,把多余的0删去

eg1.把二进制11011010101011.110111转换成十六进制
解:

  1. 分组,左右两组不足则补齐4位: 0011|0110|1010|1011.1101|1100
  2. 转换 :                                          3        6      A        B . D       C
  3. 整理结果                                  36AB.DC

eg2.把十六进制36D.7A转换成二进制
解:

  1. 一个一个分组:3   |  6      |    D .     7  |  A
  2. 转换:             0011 | 0110 | 1101.0111 | 1010
  3. 整理结果:   1101101101.0111101

二进制与八进制之间的转换类似只不过,是“3位一组”。

1.2 数的书写方法
  1. 下标法:
    在写完表示数值的数符序列之后,在右下角以角标的形式写上所使用的数制的基数。
    例如:10012 表示这是一个二进制数

  2. 前导法:(C语言采用此方法)
    在数符序列的前面加上特定的符号以区分不同的数制。
    十六进制的前导符号是: 0x (x不区分大小写)
    八进制的前导符号是:0
    十进制数没有前导符号
    例如:十六进制数123在C语言中写成:0x123 ; 八进制数123在C语言中写成:0123

  3. 后缀法:
    在数符序列的面后加上特定的符号以区分不同的数制。

1.3数据存储

内存、外存和CPU中的寄存器都可以存储数据,但是在程序执行过程中,通常CPU只直接处理寄存器和内存中的数据,外存中的数据先调入内存在进行处理。
CPU中有单字节处理器、双字节处理器、4字节处理器,可以存放不同类型的数据。内存则以字节为基本存储单位,存储一个字符只需要一个字节,但存储复杂数据时一个显然是不够的,这就需要把多个连续的内存字节组合在一起使用。

存储元是计算机科学中两个重要的概念,它们在数据存储和处理方面扮演着不同的角色。为了让你更容易理解这两个概念,我将从定义、功能和应用等方面进行详细解释。

1.3.1 定义
位(Bit):

位是“二进制位”的缩写,是计算机中最基本的信息单位。它可以表示两种状态,通常用0和1来表示。例如,位可以用来表示开关的状态:0表示关闭,1表示打开。

存储元(Storage Element):

存储元是指能够存储一个或多个位的基本单元。它可以是一个简单的电路,能够保持位的状态,或者是更复杂的结构,如寄存器、内存单元等。存储元的设计可以使其在需要时读取或写入数据。

2. 功能
位的功能:

位是信息的最小单位,所有的数据(无论是数字、字符还是图像)最终都可以被转换为位的组合。计算机通过处理位来执行各种操作,比如算术运算、逻辑运算等。

存储元的功能:

存储元的主要功能是保存位的信息。它们可以在计算机的内存中存储数据,并在需要时提供这些数据。存储元的设计决定了数据的存取速度和存储容量。例如,RAM(随机存取存储器)中的存储元可以快速读写,而硬盘中的存储元则用于长期保存数据。

3. 应用
位的应用:

位在计算机的各个方面都有应用。比如,在网络通信中,数据通过位的传输进行交换;在图像处理中,图像的每个像素可以用多个位来表示其颜色信息。

存储元的应用:

存储元广泛应用于计算机的内存和存储设备中。比如,RAM中的存储元用于临时存储正在处理的数据,而硬盘中的存储元则用于长期存储文件和程序。现代计算机中,存储元的设计和效率直接影响到计算机的性能。

4. 总结

简单来说,位是信息的基本单位,而存储元是能够存储这些位的结构。位是构成数据的基础,而存储元则是实现数据存储和访问的工具。在计算机中,通常一个存储元可以存储一个位。

1个位存储的信息量实在太小,于是把8个位联合在一起使用,称为一个字节。
换算关系:

1byte=8bit 1KB=1024B 1MB=1024KB 1G=1024MB 1T=1024GB

CPU对所有字节进行编号,从0编起,按自然数顺序逐个编排。每一个内存字节在计算机中都有唯一的编号,这个编号就是内存地址。
1.3.2存储字符

字符是指人们日常生活中使用的各种符号(包括0~9数字符号,大小写各26个英文字母,加减乘除号等),程序设计语言并不直接处理这些形状,而是处理他们的代码。
计算机可以根据ASCII表进行字符形状和代码之间的相互转换机制。
标准的ASCII码一共编排了128个符号。

1.3.3存储整数

一个字节存储器存放整数时,共有28=256种不同的组合。如果把一个字节的各个位全部用于表示二进制数,则可以存放0~255的整数;如果用最高位表示数的正负情况,其余位表示数值,则可存放 -128~+127的整数,这种表示整数的方式成为补码

觉得单字节存储器太小,不足以存放数据时,可以考虑把几个字节联合起来当作一个整体。现在的计算机一般都支持把2字节、4字节或者8字节甚至16字节联合使用:

  1. 通常都是把2的i次方个联合使用(例如:用一个字节存储器存放整数时,共有28=256种同的组合)
  2. 这些字节的地址是连续的,以最小地址作为联合使用的整体的地址。(联合时把地址大的字节叫做高位,地址小的字节叫做低位)
  3. 4字节以上的联合使用往往要求其最小地址是4的整数倍,一些高档计算机针对8字节以上的联合使用要求最小地址是8的整数倍。
  4. 这样的联合使用由编译软件帮助处理,程序员只需要了解写出的命令是在使用几字节存储器就行了。

补码:是计算机中表示整数的最常用的方法,该方法用最左的一个二进制位表示数的正负,其余位表示数值。

原码,反码,补码的相关介绍,转载至这篇文章

如何求补码?

  1. 存储数据时首先要确定存储单元的大小,即字节数或者二进制位数。对于一个存储单元的各个二进制位,以最右边的一位为第0位,依次向左编号。1字节存储单元的最左边一位(最高位)是第7位,以此类推。
  2. 正整数的补码:
    2.1 最高位为0;
    2.2 其余各位就是该整数对应的二进制形式,位数不足时左补0。
  3. 整数0的补码:存储单元的所有二进制位全为0。
  4. 负数的补码:
    4.1 先按负数的绝对值转换成对应的二进制形式;
    4.2 以左补0的方式凑齐单元的位数;
    4.3 对所有的二进制位取反
    4.4 把4.3步得到的二进制数加1(二进制的加法:逢二进一)

如何知道一个N位补码表示的整数,其对应的十进制数是多少?

  1. 如果最左一位是0,则该它表示的是一个非负整数,直接把这N位当作一个二进制整数,转换成十进制即可。否则执行(2);
  2. 把所有的N位取反,再把这N位当作一个二进制数,按二进制加法规则加1,把得到的N位当作一个二进制整数转换成十进制,最后在该十进制前面添加负号“-”。
1.3.4存储实数

采用IEEE754标准
IEEE754的介绍,转载至这篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值