《C++》基础入门_01——数据存储,表示形式,基本运算

以下内容为大学期间学习C++语言总结的知识:
《C++》基础入门_01——数据存储,表示形式,基本运算
《C++》基础入门_02——面向对象的总体概括
《C++》基础入门_03——程序的开发过程
《C++》基础入门_04——四大语句
《C++》基础入门_05——函数详解篇
《C++》基础入门_06——面向对象的详述
《C++》基础入门_07——数据的共享保护:const
《C++》基础入门_08——利用数组实现对批量数据的处理
《C++》基础入门_09——指针和引用的讲解
《C++》基础入门_10——用户自定义数据类型详细篇
《C++》基础入门_11——友元的讲解
《C++》基础入门_12——类模板
《C++》基础入门_13——运算符的重载
《C++》基础入门_14——继承与派生
《C++》基础入门_15——多态性
《C++》基础入门_16——输入输出流详讲
《C++》基础入门_17——对象串行化
《C++》基础入门_18——异常处理
《C++》基础入门_19——命名空间
《C++》基础入门_20——文件操作
《C++》基础入门_21——在函数中返回数组的常用方法



c++是从c语言发展而来,为了与C兼容,C++保留了一些C的特性。

一、信息的分类

信息

二、信息的存储单位

1. 位(bit,b)

度量数据的最小单位,表示一位二进制信息。

2. 字节(byte B)

由八位二进制数字组成(1 byte = 8 bit)。

  • 千字节 1 KB = 1024 B
  • 兆字节 1 MB = 1024 K
  • 吉字节 1 GB = 1024 M

三、二进制的编码表式

1. 原码

X=+0101011 [X]原= 0 0101011
X=-0101011 [X]原= 1 0101011
符号位0正1负

  • 缺点:
  1. 零的表示不惟一:
    [+0]原 =000...0
    [-0]原 =100...0
  2. 进行四则运算时,符号位须单独处
    ,且运算规则复杂。

2. 反码

• 正数的反码与原码表示相同。
• 负数的反码与原码有如下关系:
符号位相同(仍用1表示),其余各位取反
(0变1, 1变0)
。例如:

X=-1100110
[X]原 =11100110 [X]反 =10011001
X=+0000000
[X]原 =00000000 [X]反 =00000000

• 反码中零的表示也不惟一

X=-0000000
[X]原 =10000000 [X]反 =11111111

• 反码只是求补码的中间码

3. 补码

  • 计算机中的补码表示法:

    1. 负数的补码由该数反码的末位加1 求得
    2. 对补码再求补即得到原码
  • 补码运算规则

    1. 符号位可作为数值参加运算
    2. 减法运算可转换为加法运算:

    加上一个负数等于加上该数的补码

    • 补码运算的结果仍为补码
    • 运算结果溢出:

    负数之和得正数,或正数之和得负数

四、数据类型

计算中的数据可以按类型分为数值数据和非数值数据。

1. 数值类型

  • 计算机中通常采用浮点方式表示实数
  • 一个数 N 用浮点形式表示可以写成:
    $$N=M×2^E$$
    1. E表示2的幂,称为数N的阶码。阶码确定了数N的小数点的位置,其位数影响该浮点数所表示的范围。
    2. M表示数N的全部有效数字,称为数N的尾数。其位数影响数据的精度
  • 机器数在机内存储的最高位表示符号位;0表示正,1表示负;剩下各位表示数值。这类编码:原码,反码,补码。
  • 计算机中表示小数点的方法有:定点表示法,浮点表示法。计算机中表示小数点的方法有:定点表示法,浮点表示法。
    1. 目前大多高级程序设计语言都采用浮点数的存储格式。
    2. 对一个位长n的浮点数来说,由符号位,阶码,尾数3部分组成。 对一个位长n的浮点数来说,由符号位,阶码,尾数3部分组成。
      • 符号位表:0正1负。
      • 阶码:表指数大小
      • 尾数:小数的有效位数

1.1 基本数据类型

1) 整型数据
进制 表现形式
十进制 默认表现形式
八进制 以数字0作为前缀
十六进制 以0X或0x作为前缀
数据类型 字节
int 4字节
short int 2字节
long int 4字节
unsigned int 4字节
2) 实数类型(浮点类型)
  • 由整数与小数两部分组成

  • 分为十进制数与指数(计算机中的实数以指数形式存放在存储单元中)

    float 4字节
    double 8字节
3) 字符类型

用英文单引号括起来的字符:'A','a'...

存储时,以字符对应的ASCII码值进行存储

有写特殊字符需要使用转义符:'\n'换行

char,unsigned char,signed char 占用1字节

4) 布尔类型

bool : true ,false
占用1字节

  • 算数运算:true=1,false=0
  • 逻辑运算:true(非0值),false(0值)

2. 非数值类型

用若干位组成的二进制数来表示一个符号。

一个二进制数只能与一个符号相对应。

  • 西文字符:
    1. ASCII码:用7位二进制数表示一个字符,最多可以表示2^7=128个字符
    2. EBCDIC码:用8位二进制数表示一个字符,最多可以表示2^8=256个字符
  • 汉字:
    1. 应用较为广泛的是"国家标准信息交换用汉字编码"(GB2312-80标准),简称国标码。是二字节码,用二个七位二进制数编码表示一个汉字。
    2. GBK码 汉字编码

五、常量

  • 常量的值不可以改变
  • 常量包含两大类:
    1. 数值型常量
    2. 字符型常量

1. 字面常量

从字面形式既可以识别的常量

1.1 整形常量

三种表示方法

  1. 十进制
  2. 八进制
  3. 十六进制
1.2 实型常量

二种表示方法:

  1. 十进制小数表示

    22.22, -56,32

  2. 指数形式
    一般形式:数符 数字部分 指数部分

    3.141592610^0-->3.1415926e0 //e后面的数字代表以10为底的幂
    0.31415926
    10^1 -->0.1415926e1

1.3 字符常量

用单引号' ' 号括起来的单个字符。
存储时存放的是字符对应ASCII码值

'a', 'A'

1.4 字符串常量
  • 双引号括起来的字符。
  • 内存中存储空间不定长 系统自动在末位添加’\0'

"hello world"

1.5 布尔常量

2. 符号常量

  • 用一个标示符代替一个数值。

  • C++中符号常量定义格式:

     #define 符号常量名  数值
    
  • 符号常量不占内存,只是一个符号,符号常量不能被重新赋值。

3. 常变量

  • 格式:

    const  数据类型  符号常量名=数值;
    
  • 一般用常变量代替符号常量

  • 在定义常变量时一定要赋初值,且在程序运行过程中不可更改。

六、变量

1. 标识符

C++中,变量名必须用标识符来命名。

  1. 由字符,数字,下划线组成。
  2. 第一个字符必须是字母或下划线。
  3. C++中大写字母和小写字母代表不同标识符。
  4. 标识符不可与C++关键字同名。

2. 变量定义与赋值

  1. 变量必须先定义后使用。

  2. 变量定义格式:

    数据类型  变量名1[,变量2,...];
    
  3. 变量初始化:
    定义变量时,可用赋值运算符“=”赋初值。
    若定义变量时未赋初值,则该变量所代表的内存空间可能是系统默认值,或是该内存空间之前运算后留下来的无效值,由系统编译器决定。

  4. 常变量(只读变量):
    格式:

    const  数据类型  符号常量名  =  数值;
    

    一般用常变量代替符号常量

    在定义常变量时一定要赋初值,且在程序运行过程中不可更改。

    具有变量的特征,具有类型,在内存中开辟的有以它命名的存储单元。

七、C++运算符

根据运算符的操作数的个数分类:

  • 单目运算符
  • 双目运算符
  • 三目运算符

1. 常用运算符:

  1. 算术运算符
    +、-、*、/、%、++、--
2. 关系运算符
    <kbd> >、< 、==、>=、<=、!= </kbd>
          
3. 逻辑运算符
   <kbd>&& (逻辑与),||(逻辑或),!(逻辑非)</kbd>
      
4. 位运算符
  <kbd> <<(按位左移),  >>(按位右移),  &(按位与) </kbd>
 <kbd>    |(按位或) ,^(按位异或),~(按位取反)</kbd>
5. 赋值运算符
    <kbd>==</kbd>
6. 条件运算符
  <kbd> ? :</kbd>
   - 一般形式

表达式1?表达式2:表达式3
表达式1 必须是 bool 类型
2. 执行顺序
– 先求解表达式1,
– 若表达式1的值为true,则求解表达式2,表达式2的值为最终结果
– 若表达式1的值为false,则求解表达式3,表达式3的值为最终结果
7. 逗号运算符
,
- 格式
表达式1,表达式2
- 求解顺序及结果
先求解1,再求解2,最终结果为表达式2的值
> a = 3 * 5 , a * 4 最终结果为60

  1. 指针运算符
    *
  2. 地址运算符和引用运算符
    &
  3. sizeof运算符
    • 语法形式
      sizeof (类型名)
      或 sizeof 表达式
      
    • 结果值:
      “类型名”所指定的类型,或者“表达式”的结果类型所占的字节数。
  4. 复合赋值运算符

    a+=3;
    b*=8;

2. 运算符优先级(高-->低)

括号
++, --, sizeof
*, /, %
+, -
==, !=
位运算
&&
||
?:
赋值运算
逗号运算

八、算术表达式

1. 数据类型的转换

1.1 自动类型转换

数据类型从 低——>高

1.2 强制类型转换

将一种数据类型转换成另一种数据类型,不安全,可能丢失数据位。
格式:

(类型名)表达式  or   类型名(表达式) 

强转的原数据类型不会改变

2. 自增和自减

a=++i;i先自增,再赋值给a
a=i++;i先赋值給a,再自增
(- -同理)

  1. 后缀自增 从左到右 (i++)++
  2. 前缀自增 从右到左 ++(++i)

九、逗号表达式

逗号表达式按照结合性从左到右求解,整个逗号表达式是最后一个表达式的值。
赋值运算符的优先级别高于逗号运算符的优先级

a=2+3,b=1*4,a=a+2;
最终a=7;

十、位运算表达式位

位运算表达式中操作数只能为整型数据

运算符 操作
& 按位与 都为1时,才取值1;否则为0
^ 按位异或 相同为0,不同为1
>>右移 左端添加0
按位或 | 凡出现1取值1,;否则为0
<<左移 右端天津0
~ 按位取反
举例:

a=99 b=66
a: 00000000 00000000 00000000 01100011
b: 00000000 00000000 00000000 01000010
~a: 11111111 11111111 11111111 10011100
a&b:00000000 00000000 00000000 01000010
a|b: 00000000 00000000 00000000 01100011
a^b:00000000 00000000 00000000 00100001
a<<2:00000000 00000000 00000001 10001100
a>>2:00000000 00000000 00000000 00010000

posted @ 2020-09-29 20:23  WaitFoF❤  阅读(360)  评论(0编辑  收藏  举报