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;

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

猜你喜欢

转载自blog.csdn.net/weixin_44212242/article/details/125629594
今日推荐