各类进制的概述

###### 1.进制的概述

  1. 二进制

    0、1 以0b开头 bitset<8>输出

  2. 八进制

    0~7 以0开头 0123 oct输出

  3. 十进制

    0~9 cout默认输出十进制

  4. 十六进制

    0~9 a~f 以0x开头 0x12 hex输出 不区分正负数

  5. n进制

    0~n-1

2.原码、反码、补码
  1. 计算机存储的是数据的补码

  2. 原码:计算机中对数字的二进制定点表示方法

    123的原码:0111 1011

  3. 无符号数:

    ​ 补码 == 反码 == 原码

    ​ 123原码:0111 1011

    ​ 123反码:0111 1011

    ​ 123补码:0111 1011

  4. 有符号正数

    ​ 补码 == 反码 == 原码

    ​ +123原码:0111 1011

    ​ +123反码:0111 1011

    ​ +123补码:0111 1011

  5. 有符号负数

    ​ 原码

    ​ 反码 == 原码符号位不变,其它位 按位取反

    ​ 补码 == 反码+1

    ​ -123原码: 1111 1011

    ​ -123反码: 1000 0100

    ​ -123补码: 1000 0101

  6. 对数据的存:非负数在计算机中以原码的方式存储,负数以补码的方式存储

  7. 对数据的取:无符号变量:输出内存中原样数据

    ​ 有符号数据:系统回去看内存的最高位,如果最高位为 0表明正数,内存原样输出。最高位为1表明负数,将内存的数据求补码,得到原码输出。

3.补码的意义
  1. 统一了0的编码

    +0的原码:0000 0000
    -0的补码:0000 0000
    		-0原码:1000 0000
    		-0反码:1111 1111
    		-0补码:10000 0000 二进制只有八位所以去掉1得:
    		-0补码:0000 0000
    
4.const关键字

​ const 修饰的变量为 只读变量:初始化后,不能被修改

// 以常量初始化const修饰的变量,会事先存放在 “符号常量表” 中
// data再被取地址时,系统才会为其开辟控件。
    const int data = 100;

    int* p = (int*) &data;

    *p = 200;

    cout << data << endl;	// 100
    cout << *p << endl;		// 200

1661826627893

// 以变量初始化const修饰的变量,那么不会存储在符号常量表,会立即开辟空间存储

    int a = 100;
    const int data = a;

    int* p = (int*)&data;

    *p = 200;

    cout << data << endl;	// 200
    cout << *p << endl;		// 200
posted @ 2022-09-09 10:15  王韩六六  阅读(445)  评论(0编辑  收藏  举报