鸡啄米:C++编程入门系列之一(进制数)

转载自:

http://www.jizhuomi.com/software/21.html

鸡啄米在前言已经讲了程序的发展历程,程序设计的进步和编程入门的一些基本概念。这一节主要讲数据在计算机中的存储结构。计算机执行程序需要控制信息和数据信息,控制信息涉及硬件方面,鸡啄米主要讲数据信息的存储。这部分内容可能有点郁闷,但是这是基础之基础,在编程入门时还是掌握下吧。

        大家应该知道比较常用的数制是十进制、二进制、八进制和十六进制。二进制就是逢二进一,每位都是小于二的数,其他进制类推。计算机存储数据使用的是二进制编码。

        对于一个R进制的数X来说,其值可以通过下面的公式算出来:R进制计算公式,前面是整数部分,后面是小数部分,m,n为正整数,表示第i位上的数字乘以进制数的i次方。比如二进制数(11.01)2=1×21+1×20+0×2-1+1×2-2=3.25。当R进制转换到十进制时,就这样转换。

        那十进制怎么转换为R进制呢,可以将十进制数连续除以R,其每个余数就是R进制数各个数位上的数字,最后的余数是最高位。比如将68转换成二进制数,用除2取余法:

 2∟68                       余数

 2∟34 …………………0       低位

 2∟17 …………………0

 2∟8   …………………1

 2∟4   …………………0

 2∟2   …………………0

 2∟1   …………………0

  0        …………………1       高位

       结果就是6810 =10001002,将68转换为八进制数就用除8取余法。

 鸡啄米:C++编程入门系列之一(进制数)

       十进制小数转换成R进制小数,整数部分仍按上述方法转换,小数部分则乘以R,然后将结果的整数位取出作为转换最终结果的一位,再用去掉整数位的小数再乘以R,之后循环这样执行,直到小数部分为0或者达到所要求的精度为止,取出的这些整数位第一位为最高位。例如,将十进制小数0.3125转换成二进制小数: 

        0.3125×2 = 0.625       取出0,为最高位

        0.625×2 = 1.25           取出1,剩下的小数为0.25

        0.25×2 = 0.5               取出0

        0.5×2 = 1.0                 取出1,小数位为0,不再继续

       结果就是0.312510 =0.01012 。所以将十进制数68.3125转换成二进制数就是1000100.0101。  

二进制和八进制十六进制之间怎样转换呢?每位八进制数相当于三位二进制数,每位十六进制数相当于四位二进制数,举个例子说明下就清楚了:

(1000100)2=(1 000 100)2=(104)8

(1000100)2=(100 0100)2=(44)16

上面这个等式反过来当然也成立,就是八进制十六进制转换为二进制反过来计算就可以了。

下面鸡啄米再跟大家说下计算机数据的存储单位,常用的单位有“位”,“字节”,“字”。

位:这是数据的最小单位,表示一位二进制数据。

字节:由八位二进制数据组成。字节是数据存储中最常用的基本单位。我们常说内存有2G,这里的单位就是字节。1K等于1024字节,1M等于1024K,1G等于1024M。

字:位的组合,作为一个独立的信息单位处理。取决于机器的类型、字长及使用者的要求。常用的固定字长有8位、16位、32位等。

机器字长:讨论信息单位时,有个与机器硬件指标有关的单位就是机器字长,一般指参加运算的寄存器所含有的二进制数的位数,它代表了机器的精度,如32位、64位等。就是我们常说的32位机器还是64位机器。

这一节鸡啄米就讲到这里了,因为确实是比较死的东西,大家大部分需要记住就行了。如果还有什么不明白的,欢迎大家到鸡啄米博客交流学习。谢谢大家!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
啄米的资料,大家可以上官网看。这是我整理的压缩包,大家可以离线看。(这个资源还要大家积分,实在是惭愧,只因积分不够用,抱歉,体谅!) 大家要是觉得不错,可以下载我整理得另一套资源:VS2010+MFC编程入门,也是啄米的,写得不错,通俗易懂! --------------------------完整目录如下------------------- 第一部分:C++编程概述 啄米C++编程入门系列之前言 啄米C++编程入门系列之一(进制啄米C++编程入门系列之二(原码、反码与补码) 第二部分:C++简单程序设计 啄米C++编程入门系列之三(VS2010的使用介绍) 啄米C++编程入门系列之四(据类型) 啄米C++编程入门系列之五(运算符和表达式) 啄米C++编程入门系列之六(算法的基本控制结构之选择结构) 啄米C++编程入门系列之七(算法的基本控制结构之循环结构) 啄米C++编程入门系列之八(自定义据类型) 第三部分:函 啄米C++编程入门系列之九(函的定义与调用) 啄米C++编程入门系列之十(函的参传递与内联函啄米C++编程入门系列之十一(重载函与函模板) 第四部分:类与对象 啄米C++编程入门系列之十二(类与对象:面向对象设计的基本思 想和特点) 啄米C++编程入门系列之十三(类与对象:类的声明、成员的访问 控制和对象) 啄米C++编程入门系列之十四(类与对象:构造函和析构函啄米C++编程入门系列之十五(类与对象:类的组合) 啄米C++编程入门系列之十六(类与对象:类模板) 啄米C++编程入门系列之十七(类与对象:UML简介) 第五部分:C++程序设计必知 啄米C++编程入门系列之十八(C++程序设计必知:作用域和可见 性) 啄米C++编程入门系列之十九(C++程序设计必知:生存期) 啄米C++编程入门系列之二十(C++程序设计必知:据和函啄米C++编程入门系列之二十一(C++程序设计必知:类的静态成 员) 啄米C++编程入门系列之二十二(C++程序设计必知:友元) 啄米C++编程入门系列之二十三(C++程序设计必知:常引用、常对 象和对象的常成员) 啄米C++编程入门系列之二十四(C++程序设计必知:多文件结构和 编译预处理命令) 第六部分:组、指针和字符串 啄米C++编程入门系列之二十五(组、指针和字符串:组的声 明和使用) 啄米C++编程入门系列之二十六(组、指针和字符串:组的存 储与初始化、对象组、组作为函啄米C++编程入门系列之二十七(组、指针和字符串:指针变量 的声明、地址相关运算--“*”和“&”) 啄米C++编程入门系列之二十八(组、指针和字符串:指针的赋 值和指针运算) 啄米C++编程入门系列之二十九(组、指针和字符串:指向组 元素的指针和指针组) 啄米C++编程入门系列之三十(组、指针和字符串:指针用作函 、指针型函和函指针) 啄米C++编程入门系列之三十一(组、指针和字符串:对象指 针) 啄米C++编程入门系列之三十二(组、指针和字符串:动态内存 分配和释放) 啄米C++编程入门系列之三十三(组、指针和字符串:用字符 组存放和处理字符串) 啄米C++编程入门系列之三十四(组、指针和字符串:string 类) 第七部分:继承与派生 啄米C++编程入门系列之三十五(继承与派生:概念介绍与派生类 的声明) 啄米C++编程入门系列之三十六(继承与派生:派生类从基类继承 的过程) 啄米C++编程入门系列之三十七(继承与派生:派生类对基类成员 的访问控制之公有继承) 啄米C++编程入门系列之三十八(继承与派生:派生类对基类成员 的访问控制之保护继承与私有继承) 啄米C++编程入门系列之三十九(继承与派生:派生类的构造函 啄米C++编程入门系列之四十(继承与派生:派生类的析构函啄米C++编程入门系列之四十一(继承与派生:作用域分辨符) 啄米C++编程入门系列之四十二(继承与派生:虚基类及其派生类 的构造函啄米C++编程入门系列之四十三(继承与派生:赋值兼容规则) 第八部分:多态性 啄米C++编程入门系列之四十四(多态性:多态的概念和类型) 啄米C++编程入门系列之四十五(多态性:运算符重载的概念和规 则) 啄米C++编程入门系列之四十六(多态性:运算符重载为类的成员 函啄米C++编程入门系列之四十七(多态性:运算符重载为类的友元 函啄米C++编程入门系列之四十八(多态性:虚函啄米C++编程入门系列之四十九(多态性:纯虚函和抽象类) 第九部分:异常处理 啄米C++编程入门系列之五十(异常处理) 啄米C++编程入门系列之目录和总结

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值