• Day03 计算机信息的存储


    学习C++的一个关键是要理解计算机中数据的存储方式。众所周知,计算机采用二进制进行数据的存储与运算,本篇就围绕二进制数的转换,存储,运算进行展开。

    1.什么是二进制?

    通常人们所熟悉的和使用的是十进制,即使用0~9表示数据,逢十进一。类比之下,二进制就是0和1表示数据,逢二进一。除此之外常见得还有八进制(0开头)与十六进制(0X开头)。

    二进制表示数据具有以下优点:

    a.便于物理表达:只有两种状态,在物理上表达为通电或者断电,这也是早期电子管计算机运作的基本原理。

    b.运算简单:根据排列组合,对于R进制,对于求和与求积,按照运算数的组合分别有R(R+1)/2种。对于二进制则是有三种。

    缺点:占据数位较多,容量较小。

    2.进制转换

    a.二进制转十进制

     类似的八进制或者十六进制转化为十进制也是按位幂运算求和。

    b.十进制转二进制

    俗称除二取余法

    每次取余数,然后从低位写到高位(1000100)=68.八进制与十六进制也是如此。

    以上是整数,当存在小数时,则不再是相除,而是相乘 (乘二取整法):

     所以(0.3125)_{10}=(0.0101)_{2}

    因此结合整数部分可知:(68.3125)_{10}=(1000100.0101)_{2}

    3.信息的存储

    位(bit):即0或者1占据的位置,表示1位二进制;

    字节(byte):8位为1byte,信息存储基本单位;

    C++中的数据类型往往都是byte的整数倍,例如sizeof(int)就是4byte;

    4.原码,反码与补码

    以8位二进制数为例:只有右边七位表示数值,最左边一位表示符号(0为正1为负):

    A:+1011011    B:-1011011

    正数的原码,反码一样,补码为反码+1,因此不讨论,重点讨论负数的 :

    原码:首位表示符号,后边表示无符号的数值;

    反码:符号位不变,后边按位取反;

    补码:反码最小位+1;

    原码=补码+1;

    由于补码具有良好的运算性质,数据一般都存储为补码

     

  • 相关阅读:
    QT-Linux生成错误日志dump
    Spring Data JPA 之 Auditing
    vue瀑布流插件vue-waterfall-plugin
    IceRPC之依赖注入>快乐的RPC
    模型工厂,让AI算法触手可达 | StartDT Tech Lab 05
    第五篇章——执行引擎
    Springboot考研教材查询系统wi7pz计算机毕业设计-课程设计-期末作业-毕设程序代做
    决策树-入门
    C++容器适配器操作总结(代码+示例)
    SQL按照id集合顺序返回
  • 原文地址:https://blog.csdn.net/weixin_44212242/article/details/125629594