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

目录

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,直到尾数为格式化数。如果这个过程
中,指数小于机器能表达的最小数,则将结果置"机器零",这种情况称为下溢。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Chinese-llama-2部署踩坑记录

Chinese-llama-2部署踩坑记录 1. Chinese-LLaMA-Alpaca-2A. 部署a. inference_with_transformers_zhb. text generation webui_zhc. api_calls_zhd. llamacpp_zhe. privategpt_zhf. langchain_zh Tool Github 1. Chinese-LLaMA-Alpaca-2 A. 部署 a. inference_with_transform…

【UnityShader入门精要学习笔记】(2)GPU流水线

本系列为作者学习UnityShader入门精要而作的笔记,内容将包括: 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更,有始无终 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 上节复习GPU流水线顶点着色…

【git使用】一个非常适合新手的代码管理方法——master/develop模型

生产/开发模型【支持master/develop 类型分支】 1.gitee、github创建仓库2.使用sourcetree拉取仓库3. 检出develop分支,并初始化工作流4.模拟日常开发流程5.具备发布条件,进行发布6.将master和develop分支的版本都推送到远程仓库7.继续循环4-5-6进行开发…

Python 面向对象之多态和鸭子类型

Python 面向对象之多态和鸭子类型 【一】多态 【1】概念 多态是面向对象的三大特征之一多态:允许不同的对象对同一操作做出不同的反应多态可以提高代码的灵活性,可扩展性,简化代码逻辑 【2】代码解释 在植物大战僵尸中,有寒冰…

数据结构和算法-希尔排序(增量序列 算法实现 性能分析 稳定性)

文章目录 希尔排序过程小结增量序列不是固定的 算法实现算法性能分析稳定性小结 希尔排序 基本有序,就是存在有序的子序列 通过增量4得到各个子表 对各个子表分别进行插入排序 缩小增量,再除2,此时的子表 对各个子表插入排序 缩小增量&…

STC进阶开发(四)SPI协议、矩阵键盘、EEPROM

前言 这一期我们简单介绍一下SPI协议,然后我们学习一下矩阵键盘,了解EEPROM是干什么用的,话不多说,开整! SPI协议 SPI(Serial Peripheral Interface)是一种同步串行通信协议,用于在…

OJ刷题 第十七篇()

34005 - 汽水瓶(有意思) 时间限制 : 1 秒 内存限制 : 128 MB 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方…

Python 测试框架 Pytest 入门

简介 pytest 是一个功能强大而易于使用的 Python 测试框架。它提供了简单的语法和灵活的功能,用于编写和组织测试代码。 1、简单易用:pytest 的语法简洁明了,使得编写测试用例更加直观和易于理解。它使用 assert 语句来验证预期结果&#x…

SpringBoot内嵌的Tomcat启动过程以及请求

1.springboot内嵌的tomcat的pom坐标 启动后可以看到tomcat版本为9.0.46 2.springboot 内嵌tomcat启动流程 点击进入SpringApplication.run()方法里面 看这次tomcat启动相关的核心代码refreshContext(context);刷新上下文方法 public ConfigurableApplicationContext run(Stri…

银行卡号识别

导入库 from typing import Any, Union, Sequencefrom cv2.mat_wrapper import Mat from imutils import contours import numpy as np import argparse import imutils import cv2 import myutils设置参数 # 设置参数 from numpy import dtype, ndarray, genericap argpars…

“巴渝工匠杯”2022年重庆市职业院校技能大赛(高职组)云计算样题

“巴渝工匠杯”2022年重庆市职业院校技能大赛(高职组)云计算样题 需要软件包环境可私信博主 【赛程名称】云计算赛项第一场次-私有云 某企业拟使用OpenStack搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授…

Visual Studio 2022进行文件差异比较

前言 Visual Studio 2022在版本17.7.4中发布在解决方案资源管理器中比较文件的功能,通过使用此功能,可以轻松地查看两个文件之间的差异,包括添加、删除和修改的代码行。可以逐行查看差异,并根据需要手动调整和编辑文件内容以进行…

易图讯便携式三维电子沙盘实战应用系统

便携式三维电子沙盘采用军工加固三防高性能笔记本,具有IP65级防尘防水防摔性能,以大数据、云计算、虚拟现实、物联网、AI等先进技术为支撑,支持高清卫星影像、DEM高程数据、矢量数据、三维模型、倾斜摄像、BIM、点云、城市白模、等高线、标高…

数据结构学习 jz56数组中数字出现的次数

关键词:位运算 异或性质 虽然有两道题,但是其实应该分成三个级别的题目。 题目一: 一个整型数组 sockets 里除 一个 数字之外,其他数字都出现了两次。 思路:异或的性质 复杂度计算: 时间复杂度O(n) 空…

在Go语言中处理HTTP请求中的Cookie

在Web开发中,Cookie是一种常用的技术,用于在客户端存储数据,并在随后的请求中发送回服务器。Go语言的标准库提供了强大的支持来处理HTTP请求中的Cookie。 首先,让我们了解如何在Go语言中设置Cookie。以下是一个简单的示例&#x…

three.js场景设计器-小地图的视角参考功能

three.js实现场景方向的左上角小地图 思路 1&#xff1a;创建单独场景 2.添加辅助线 3.添加坐标轴的XYZ文字-使用sprite实现 4.旋转主视图时同步相机位置到小地图。 <template> <div ref"miniMapContainer" class"mini-map"></div>…

Apache Commons Email在邮件发送中的应用

第1章&#xff1a;简介 大家好&#xff0c;我是小黑&#xff0c;今天咱们聊聊Apache Commons Email这个库&#xff0c;它在发送邮件方面可谓是小而美的利器。Apache Commons Email基于JavaMail API&#xff0c;但它提供了更简洁、更易用的接口&#xff0c;让咱们在处理电子邮件…

如果PostgreSQL有两层nginx代理,会发生什么事?

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 1. 前言 PostgreSQL默认只能本机连接&#xff0c;若要在别的客户端远程连接pgsql&#xff0c;则需要修改配置文件pg_hba.conf&a…

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

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

QML —— SwipeView、PageIndicator组合示例(附完整源码)

示例效果 介绍 SwipeView提供了一个基于滑动的导航模型,由一组页面组成。一次只能看到一个页面。用户可以通过横向滑动在页面之间导航。请注意,SwipeView本身是完全不可见的。建议将其与PageIndicator结合使用,以向用户提供有多个页面的视觉线索。 PageIndicator用于指示包含…