• 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;

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

     

  • 相关阅读:
    Jenkins 部署.net core 项目 - NU1301错误
    关于架构的一些理念
    model.eval 至关重要!!!!model.eval()是否开启 BN 和 Dropout 的不同
    JAVASE总结作业----面向对象的三大特征
    命名实体识别
    动态链接函数(dlopen/dlsym/dlclose)使用总结
    Android  JetPack~ LiveData (一)   介绍与使用
    提取歌曲伴奏?用对软件一键帮你搞定~
    如何创建像 Quora 这样的问答网站:技术堆栈、用户获取等
    RFID智能档案柜助力各大银行实现RFID智能档案管理
  • 原文地址:https://blog.csdn.net/weixin_44212242/article/details/125629594