计算机基础知识——数据的表示概述

目录

1 进制转换

1.1 二进制、十进制和十六进制等常用数制及其相互转换

1.2 十进制和二进制之间转换

1.3 二进制数与八进制数、十六进制数之间的转换  

2 码值:原码、反码、补码

2.1 原码

2.2 反码

2.3 补码

3 浮点数表示

3.1 浮点数的运算


1 进制转换

1.1 二进制、十进制和十六进制等常用数制及其相互转换

  R进制,通常说法就是逢R进1.可以用的数为R个,分别是0,1,2,…,R–1.例如十进制数的基数为
10,即可以用到的数码个数为10,它们是0,1,2,3,4,5,6,7,8,9.二进制数的基数为2,可用的数码个数为2,它们是0和1。

  BCD码:十进制的二进制表示,

  0:0000     1:0001    2:0010   3:0011  4:0100    5:0101

6:0110     7:0111    8:1000   9:1001

十进制的202可以表示成BCD码为0010 0000 0010;    

十六进制表示法是用16个数字组成的,每4位二进制数字表示一位十六进制数,十六进制的数字表示从0-9,A,B,C,D,E,F共十六个字符。十六进制与二进制相互转换就是一位十六进制字符与四位二进制数字的相互转换过程。

1.2 十进制和二进制之间转换

十进制向二进制转换分两步进行:首先把该数的整数部分和小数部分转换为二进制数;然后再把这两部分合并起来即可。公式如下:

N=(R_{n}R_{n-1}...R_{1}R_{0}R_{-1}...R_{-m}) =R_{n}*2^{n}+R_{n-1}*2^{n-1}+...+R_{1}*2+R_{0}+R_{-1}*2^{-1}+...+R_{-m}*2^{-m}

例如二进制数10100.01的值可计算如下:

10100.01=1*2^{4}+1*2^{2}+1*2^{-2}

十进制向二进制转换,最常用的是“除以R取余法”。当R=2,就是二进制。例如将十进制94转换成二进制数。

将所得的余数从低位到高位排列(1011110)2就是94的二进制数。
 

1.3 二进制数与八进制数、十六进制数之间的转换  


将二进制数转换为八进制数,只有将每3个二进制数转换为八进制数即可,将二进制数转换为十
六进制数,只要将每4个二进制数转换为八进制数即可。将八进制数转换为二进制数,只要将每个八进制数转换为3位二进制数即可,将十六进制数转换为二进制数,只要将每个十六进制数转换为4位二进制数即可。上面的转换都是以小数点作为计算数码个数的起点。八进制数和十六进制数转换可先转换为二进制数,然后再转换为目标进制。
 

2 码值:原码、反码、补码

2.1 原码

将最高位用做符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值的表示形
式。这种方式是最容易理解的。
例如,+11的原码是00001011,–11 的原码是10001011。
但是直接使用原码在计算时却会有麻烦,比如(1)+(–1) = 0,如果直接使用原码则:
(00000001)B + (1000001)B = (10000010)B
这样计算的结果是–2(十进制),也就是说,使用原码直接参与计算可能会出现错误的结果。所以,原码的符号位不能直接参与计算,必须和其他位分开,这样会增加硬件的开销和复杂性。

2.2 反码

正数的反码与原码相同。负数的反码符号位为1,其余各位为该数绝对值的原码按位取反。这个取反的过程使得这种编码称为"反码"。
例如,–11的反码:11110100
同样对上面的加法,使用反码的结果是:
(00000001)B + (11111110)B = (11111111)B
这样的结果是负0,而在人们普遍的观念中,0是不分正负的。反码的符号位可以直接参与计算,
而且减法也可以转换为加法计算。
 

2.3 补码

正数的补码与原码相同。负数的补码是该数的反码加1,这个加1就是"补"。
例如,–11的补码:11110100+1 = 11110101
再次做加法是这样的:
(00000001)B + (11111111)B = (00000000)B
直接使用补码进行计算的结果是正确的。注意到我们这里只是举例,并非证明。
对一个补码表示的数,要计算其原码,只要对它再次求补,可得该数的原码。
由于补码能使符号位与有效值部分一起参加运算,从而简化运算规则,同时它也使减法运算转
换为加法运算,进一步简化计算机中运算器的电路,这使得在大部分计算机系统中,数据都使用补
码表示。

3 浮点数表示

定点数和浮动数的区别在于如何对待小数点,在运算方式上也不相同,衡量一个计算机系统,定点运算和浮点运算是两个重要的指标。定点数的小数点是隐含的,固定在某个位置。如果该位置是在数的最低位之后,就是定点整数。定点数表示比较简单,运算规则也比较容易实现,但是当数值范围变化大时,使用定点数表示和运算就比较困难。
为了表示更大范围的数值,可以使用浮点数表示法。
在表示一个很大的数时,我们常常使用一种称为科学计数法的方式:
N=M*R^{e}
其中M称为尾数,e是指数,R为基数。
浮点数就是使用这种方法来表示大范围的数,其中指数一般是2,8,16.而且对于特定机器而言,指数是固定不变的,所以在浮点数中指数并不出现。从这个表达式可以看出:浮点数表示的精读取决于尾数的宽度,范围取决于基数的大小和指数的宽度。
 

3.1 浮点数的运算

浮动数运算过程比定点数复杂,包括以下过程:
1)对阶
首先计算两个数的指数差,把指数小的向指数大的对齐,并将尾数右移指数差的位数,这样两个浮点数就完成了对阶的操作。可以看出,对阶的过程可能使得指数小的浮点数失去一些有效位。
如果两个浮点数阶数相差很大,大于指数小的浮点数的尾数宽度,那么对阶后那个浮点数的尾数就
变成了0,即当做机器零处理了。
2)尾数计算
对阶完成后,两个浮点数尾数就如同定点数,计算过程同定点数计算。
3)结果格式化
尾数计算后,可能会产生溢出,此时将尾数右移,同时指数加1,如果指数加1后发生了溢出,则
表示两个浮点数的运算发生了溢出。
如果尾数计算没有溢出,则尾数不断左移,同时指数减1,直到尾数为格式化数。如果这个过程
中,指数小于机器能表达的最小数,则将结果置"机器零",这种情况称为下溢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/324847.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【mac-m1 docker 安装upload-labs靶场】

1.搜索upload-labs docker search upload-labs 2.下载upload-labs docker pull c0ny1/upload-labs 3.启动 docker run -it -d --name uploadlabs -p 80:80 c0ny1/upload-labs --platform linux/amd64 4.访问127.0.0.1:80 注意点:后续使用的时候会报错 需要手动创…

selenium 用webdriver.Chrome 访问网页闪退解决方案

1.1.1. 解决方案: 1.1.1.1. 移动插件到谷歌的安装目录下 1.1.1.2. 设置环境变量 1.1.1.3. 重启电脑检查成功 解决时间:5min

J2 - ResNet-50v2实战

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 目录 环境步骤环境设置数据准备图像信息查看 模型设计ResidualBlock块stack堆叠resnet50v2模型 模型训练模型效果展示 总结与心得体会 环境…

CommonJS 和 ES6 Module:一场模块规范的对决(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

OpenAI 拟每年投入 100-500 万美元,以获取新闻使用许可

最近两位媒体公司高层透露,OpenAI正积极与新闻出版公司进行谈判,提出每年投入100万至500万美元的费用,以获取将新闻文章用于训练大型语言模型的授权。 OpenAI目前正与大约十几家媒体公司进行谈判,但有报道称,即使对于…

免费部署私人 ChatGPT的项目:LobeChat 14K+

前言 随着ChatGPT的快速风靡,所有人都对AI高度关注,那么你想不想部署一个属于自己的私人ChatGPT,用更美观,更高效,更好玩的方式来体验AI呢? 今天我们推荐的就是可以帮你实现在本地部署私人ChatGPT&#x…

软件测试|一篇文章带你深入理解SQL约束

深入理解SQL约束:保障数据完整性和一致性的重要工具 SQL约束是在关系型数据库中用于保障数据完整性和一致性的重要工具。本文将深入探讨SQL约束的概念、类型以及应用,以帮助读者更好地理解和使用SQL约束来确保数据库中的数据质量。 SQL约束 约束&…

Vue中break关键字

Change() {//每次触发该事件,都要讲data重新赋值一次this.data JSON.parse(JSON.stringify(this.data1));// 根据选中的等级更新数据switch (this.selectedlevel) {case 1:// 更新数据为一级数据this.data this.data.filter(item > item.level "1"…

炫酷的倒计时引导页

文章目录 文件分布介绍效果预览代码css样式Locationplayer.css js样式player.js 文件分布介绍 效果预览 代码 css样式 Location html {height: 100%;}body {font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hirag…

RoadMap8:C++中类的封装、继承、多态与构造函数

摘要:在本章中涉及C最核心的内容,本文以C中两种基础的衍生数据结构:结构体和类作为引子,从C的封装、继承与多态三大特性全面讲述如何在类这种数据结构进行体现。在封装中,我们讲解了类和结构体的相似性;在继…

PostGIS学习教程十七:线性参考

PostGIS学习教程十七:线性参考 线性参考是一种表示要素的方法,这些要素可以通过引用一个基本的线性要素来描述。使用线性参照建模的常见示例包括: 公路资产,这些资产使用公路网络沿线的英里来表示。 道路养护作业,指…

【Linux Shell】7. printf 命令

文章目录 【 1. printf 命令的使用方法 】【 2. 实例 】 【 1. printf 命令的使用方法 】 printf 命令模仿 C 程序库(library)里的 printf() 程序,printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。prin…