当前课程知识点:C++语言程序设计基础 > 第1章 绪论 > 信息的表示和储存 > 计算机的数字系统
计算机的数字系统
l二进制系统;
l基本符号:0、1。
l各位数字与它的权相乘,其积相加,例如:
(11111111.11)2 =1×27+1×26+1×25+1×24+1×23+1×22+1×21+1×20+1×2-1+1×2-2 =(255.75)10
l“除以R取余”法。
所以 6810=10001002
l“乘以R取整”法。
所以 0.312510 = 0.01012
l1位八进制数相当于3位二进制数;
l1位十六进制数相当于4位二进制数,例如:
(1011010.10)2=(001011010.100)2=(132.4)8
(1011010.10)2=(01011010.1000)2=(5A.8)16
(F7)16=(11110111)2=(11110111)2
计算机的数值系统是二进制系统
二进制系统它状态少
只有两种状态
所以在电路里面呢
能够比较稳定的表现这两种状态
如果再多一种状态
让它表现三种状态
那么它的稳定性就会差很多
那更不要说
让它表示十进制的十种状态了
所以目前来讲
我们的技术就能够让计算机
稳定的表示两种状态
所以它的数字系统
用的都是二进制
下面这里列出了一个表
这个表里不仅列出了二进制
还列出了八进制和十六进制
大家就会奇怪
为什么老师在这个地方
要引入八进制和十六进制呢
我们知道人习惯用十进制
那么计算机只能用二进制
那好吧有十进制和二进制
人用十进制
给计算机交互的时候
我们用二进制是不是就可以了
干吗要提到八进制和十六进制
你想想二进制
可十进制之间要转换
不是一眼就看得出来它是几的
那有的时候我们希望观察一下
现在内存里面到底存的数据
它的直接状态是什么
它的真实状态是什么
如果你看到的
都是二进制形式的话
你会没有多少反应
如果这个位数特别多
你不是一眼就计算得出
它对等到十进制的什么数
但是八进制和十六进制呢
你看8是什么 2的3次方
16呢 2的4次方
所以我们就知道了
三个二进制位
正好构成一个八进制位
四个二进制位
正好构成一个十六进制位
所以我们略有经验一点
看到一串二进制码
一眼立刻就翻译出来
它的八进制是几十六进制是几
或者反过来
你看到八进制的数据
十六进制的数据
马上直观就能转换成二进制
这样的话八进制和十六进制
毕竟它状态多几个
十六进制的状态更多
有十六个状态
那么我们人阅读起来方便
而它跟二进制又有对等关系
这样在程序中用起来又比较方便
所以我们对要八进制
和十六进制也要有了解
在C语言和C++语言中呢
也允许你使用八进制
和十六进制数据的
但是作为高级语言
我们不能在程序中
使用二进制数据
虽然我们知道计算机喜欢二进制
但是那由编译器去翻译吧
我们不能直接用高级语言里面
写二进制数据
所以很多时候我们会
用八进制和十六进制
接下来我们来看
其他的二进制八进制
十六进制这些
怎么去转成十进制呢
能不能转换呢
这个转换规则很简单
我们用R代表十进制以外的
其他进制
那么将R进制转成十进制
只要用它的每一位的数字
去乘以它的权重
然后累加起来就可以了
这里给出了一个例子
是将二进制数据转换成
十进制数据的例子
大家看一下
就理解这个转换方式了
那么如果说我们要用十进制数据
转换成二进制
或者其他的进制
怎么转换呢
这里我们给出了由十进制
转换成R的进制的整数
都是整数它的转换方式
那么将一个十进制整数
转换成R进制整数
用的是除以R取余的方式
现在我们来看这个计算过程
开始我们要将这个十进制的68
转换成二进制
那不断的除以2取余
这里把余数都在旁边列出来
列成一竖列了
每一次都除以2取余
当然余数为0的时候
我们就列个0
那最开始产生的余数是最低位的
最后产生的余数是最高位的
直到这个商数为0为止
这样我们把产生的余数
依次列出来
就形成了它转换以后的
这个二进制的结果了
如果我们要将十进制的小数
转换成R进制的小数怎么转换呢
那这个方法就乘以R取整
比如说我们这里举一个例子
将一个十进制的小数
转换成二进制的小数
大家看这个例子的计算过程
比如说我们要将这个0.3125
转换成二进制的小数
那就不断的乘以2
乘以2取整也就是说
大家看第一次乘以2
整数数位是0 0就放在这儿
然后把它小数部分
拿过来再乘以2
然后进位到整数部分留在那儿
剩下的小数部分再乘以2
就一直持续这个过程
直到小数部分结果为0
这样我们把乘以2取整的
那些整数部分的内容依次列出来
最开始形成的那个整数是最高位
最后形成的整数部分是最低位
这样就完成了一个
由十进制的小数
转换成二进制的小数的过程
那么二进制和八进制十六进制
它们之间的互相转换
就非常容易了
正好三个二进制位
是一个八进制位
四个二进制位是一个十六进制位
这个大家都会转换
-导学
--第1章导学
-计算机系统简介
--计算机系统简介
--计算机系统简介 测试题
-计算机语言和程序设计方法的发展
--计算机语言和程序设计方法的发展 测试题
-面向对象的基本概念
--面向对象的基本概念 测试题
-程序的开发过程
--程序的开发过程
--程序的开发过程 测试题
-信息的表示和储存
--计算机的数字系统
--数据的编码表示
--信息的表示和储存 测试题
-实验指导
-导学
--第二章导学
-C++语言概述
--C++语言概述 测试题
-基本数据类型、常量、变量
--程序举例
--基本数据类型、常量、变量 测试题
-运算与表达式
--运算与表达式 测试题
-实验二:简单程序设计(上)
-数据的输入和输出
--数据的输入和输出
--数据的输入和输出 测试题
-选择结构
--if语句
--switch语句
--选择结构 测试题
-循环结构
--for语句
--循环结构 测试题
-自定义类型
--自定义类型
--自定义类型
-第2章小结
--第二章小结
-实验二:C++简单程序设计(下)
-导学
--导学
-函数定义
--函数定义
--函数定义 测试题
-函数调用
--例3-2
--例3-3
--例3-4
--例3-5
--例3-6
--函数调用 测试题
-嵌套与递归
--例3-9
--例3-10
--嵌套与递归 测试题
-函数的参数传递
--函数的参数传递
--函数的参数传递 测试题
-引用类型
--引用类型 测试题
-含有可变参数的函数
--含有可变参数的函数 测试题
-内联函数
--内联函数 测试题
-constexpr函数
--CONSTEXPR函数课后习题
-带默认参数值的函数
--带默认参数值的函数 测试题
-函数重载
--函数重载 测试题
-C++系统函数
--C++系统函数习题
-第3章小结
--第三章小结
-实验三(上)函数的应用
-实验三(下)函数的应用
-导学
--导学
-面向对象程序的基本特点
--面向对象程序的基本特点 测试题
-类和对象
--类和对象的定义
--类和对象 测试题
-构造函数
--构造函数基本概念
--委托构造函数
--复制构造函数
--构造函数 测试题
-析构函数
--析构函数
--析构函数 测试题
-类的组合
--类的组合
--类的组合程序举例
--前向引用声明
--类的组合 测试题
-UML简介
--UML简介
--UML简介课后习题
-结构体与联合体
--结构体与联合体 测试题
-枚举类
--枚举类
--枚举类 测试题
-第4章小结
--第四章小结
-实验四(上)
--实验四(上)
-实验四(下)
--实验四(下)
-导学
--导学
-标识符的作用域与可见性
--标识符的作用域与可见性 测试题
-对象的生存期
--对象的生存期
--对象的生存期 测试题
-类的静态成员
--类的静态成员 测试题
-类的友元
--类的友元 测试题
-共享数据的保护
--共享数据的保护 测试题
-多文件结构和预编译命令
--多文件结构和预编译命令 测试题
-第5章小结
--小结
-实验五
--实验五
-导学
--导学
-数组的定义与初始化
--数组的定义与使用
--一维数组应用举例
--数组的定义与初始化 测试题
-数组作为函数的参数
--数组作为函数的参数 测试题
-对象数组
--对象数组
--对象数组 测试题
-基于范围的for循环
-指针的定义和运算
--指针的定义和运算 测试题
-综合实例
--综合实例
-实验六(上)
--实验六上
-指针与数组
--指针数组
--指针与数组 测试题
-指针与函数
--指针类型的函数
--指向函数的指针
--指针与函数 测试题
-对象指针
--对象指针
--对象指针 测试题
-动态内存分配
--动态内存分配 测试题
-智能指针
--智能指针
-vector对象
--vector对象
--vector对象 测试题
-对象复制与移动
--移动构造
--对象复制与移动 测试题
-字符串
--C风格字符串
--string类
--字符串 测试题
-第6章小结
--第六章小结
-综合实例
--综合实例
-实验六(下)
--实验六(下)