C++讲解---基本数据类型算术型

基本数据类型—算术型

看这一篇的时候头太疼了,第一次接触了,也头疼的重新翻起ASCII 编码存储空间的计算补码表示这些琐碎的知识点。
先别被困难打倒了,虽然这里又琐碎又复杂,但是实际应用的时候不要求掌握的那么细致,可以先大体看一下这一篇的结构:

  1. 整型的声明,该部分包括比较详细的表格,不至于下次 遇见这种很细节的定义的时候看不懂,可以当作字典查询使用;
    按照有无符号可分为:
    a 无符号整型(unsigned integer type):表示 0 和正整数。

    b 有符号整型(signed integer type):表示负整数、0 和正整数。
    另外,按照长短可分为long和short型。
    整型可表示的数值范围(标准 C++ 中保证的值)
    下表格是整形的缩写,蓝色是通用的缩写,也是常用的:
    整形缩写

  2. 可以使用<climits> 头文件 去展示有符号整型数的最大最小值;(忽略掉末尾的U L即可)
    climits定义

  3. 宏的定义 见这篇文章
    C++基础知识补充_宏的定义和使用

  4. 字符型char的ASCII编码表示标点符号和大小写字母;
    该表中 空栏处指的是没有相应字符的编码。另外,表中的横向和纵向的 0 ~ F 是用十六进制数表示的各位的值。例如:
    字符 ‘R’ 的编码是十六进制数 52。
    字符 ‘g’ 的编码是十六进制数 67。
    ASCII编码表

  5. 二进制 十六进制的互相转换;
    二进制与十六进制转换

  6. 各进制的表达方式
    字面量的意思就是用什么样的方式书写数字。
    字面量

  7. 二进制和十进制的转换
    二进制转十进制
    二进制数的每一位都代表一个2的幂次方的值。从右到左,每一位的权值依次是2⁰, 2¹, 2², 2³,依此类推。将每一位的数字(0或1)乘以其对应的权值,然后将所有结果相加,就得到了十进制数。
    步骤:

    1. 写下二进制数。
    2. 从右到左给每一位编号,最右边是第0位。
    3. 计算每一位的权值:2的位数次方。
    4. 将每一位的数字乘以对应的权值。
    5. 把所有结果相加,得到十进制数。
二进制数:1 0 1 1
位数:    3 2 1 0
权值:    2³ 2² 2¹ 2= 8 4 2 1

计算:
1×8 + 0×4 + 1×2 + 1×1 = 8 + 0 + 2 + 1 = 11

十进制转二进制
将十进制数转换为二进制数,通常使用除以2取余的方法。具体步骤如下:
步骤:
1. 将十进制数除以2,得到商和余数。
2. 将商继续除以2,得到新的商和余数。
3. 重复这个过程,直到商为0。
4. 将所有余数从下往上排列,得到的二进制数就是结果。

11 ÷ 2 = 51
5 ÷ 2 = 21
2 ÷ 2 = 10
1 ÷ 2 = 01

余数从下往上排列:1 0 1 1

所以,十进制数 11 转换为二进制是 1011。
7. **sizeof() 运算符,**用来计算所占每各种整型空间的大小;可以简单的了解一下,如果大程序中出现空间的报错,可以在定义不同的整型来减少内存的占用;
使用方式见下列代码:

#include <iostream>
using namespace std;

int main()
{
    char c;
    cout << "char型的大小 :" << sizeof(char) << '\n';
    cout << "变量c的大小 :" << sizeof(c) << '\n';

    short h;
    cout << "short型的大小 :" << sizeof(short) << '\n';
    cout << "变量h的大小 :" << sizeof(h) << '\n';

    int i;
    cout << "int型的大小 :" << sizeof(int) << '\n';
    cout << "变量i的大小 :" << sizeof(i) << '\n';

    long l;
    cout << "long型的大小 :" << sizeof(long) << '\n';
    cout << "变量l的大小 :" << sizeof(l) << '\n';

    return 0;
}

运行结果为:
1
将char的size作为一个存储单位,那么剩下的变量的存储的大小可以表示为:
size
8. typedef():给变量一个别称,使用方法如下:

typedef unsigned size_t; // 定义示例: size_t 是 unsigned 的同义词
  1. typeid():得到变量的类型,使用方法如下:
#include <iostream>
#include <typeinfo>
using namespace std;

int main()
{
    char c;
    short h;
    int i;
    long l;

    cout << "变量c的类型:" << typeid(c).name() << '\n';
    cout << "变量h的类型:" << typeid(h).name() << '\n';
    cout << "变量i的类型:" << typeid(i).name() << '\n';
    cout << "变量l的类型:" << typeid(l).name() << '\n';

    cout << "字符字面量'A'的类型:" << typeid('A').name() << '\n';
    cout << "整数字面量100的类型:" << typeid(100).name() << '\n';
    cout << "整数字面量100U的类型:" << typeid(100U).name() << '\n';
    cout << "整数字面量100L的类型:" << typeid(100L).name() << '\n';
    cout << "整数字面量100UL的类型:" << typeid(100UL).name() << '\n';

    return 0;
}
  1. 补码
    为什么需要补码?
    在计算机中,最初有多种方法来表示负数,如原码、反码等,但这些方法在进行加减运算时需要不同的处理逻辑,增加了硬件设计的复杂性。补码的出现解决了这个问题,使得正数和负数的加减运算可以使用相同的电路实现。
    补码的表示方法
    正数的补码:正数的补码就是其二进制表示,即直接将数字转换为二进制形式。
    负数的补码:负数的补码是其绝对值的二进制表示取反(每个1变成0,每个0变成1)后加1。
    补码的运算
    加法:补码的加法运算可以直接使用二进制加法,不需要区分正数和负数。如果最高位产生进位,这个进位会被丢弃,结果的符号位(最高位)表示结果的正负。
    减法:补码的减法可以通过将减数取补码(即取反加1)然后进行加法运算来实现。
    用8位补码计算3+(-5)
    正数5的二进制表示为00000101,补码也是00000101。
    负数5的二进制表示(反码)为11111010,补码为11111011(反码加1)。
    进行加法运算3 + (-5):
    3的补码:00000011
    -5的补码:11111011
    加法运算:00000011 + 11111011 = 11111100(结果的补码)
    结果11111100是负数的补码,转换为十进制为-2。

好了 今天到此为止吧。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值