《计算机系统基础》——数据的表示

news2024/11/26 14:59:28

文章目录

  • 《计算机系统基础》——数据的表示
    • 移码
    • 整数
      • 无符号整数 (Unsigned integer)
      • 带符号整数(Signed integer)
      • 测试代码
    • 浮点数
      • 表示范围
    • IEEE 754标准
      • 例子
      • 规格化数
        • 0
        • +∞/-∞
        • 非数
      • 非规格数

《计算机系统基础》——数据的表示

移码

🚀🚀移码:将每一个数值加上一个偏置常数。通常,当编码位数为n时,bias取 2n-1 或 2n-1-1。

🚀🚀比如当n为4的时候,bias= 23 ,所以-8 = 0000B(-8 + 8)。之所以要用移码,主要是为了便于浮点数加减运算时的对阶操作。

整数

🚀🚀说起整数,相信大家肯定有所了解,作为我们最早使用的数据类型,但是它并没有那么简单,接下来我们就来介绍一下。

无符号整数 (Unsigned integer)

🚀🚀在整数中,我们用 LSB来表示最低有效位,用MSB来表示最高有效位,之所以这样规定,主要就是在我们的整数中,一般最高位用来表示符号位。而无符号整数则没有符号位,所有的位都用来计数。我们常在一个数的后面加一个“u”或“U”表示无符号数。

带符号整数(Signed integer)

🚀🚀而带符号整数,则是用MSB来表示数符(0–正数,1–负数),并且是采用补码来表示带符号整数。

🚀🚀若同时有无符号和带符号整数,则C编译器将带符号整数强制转换为无符号数。

在这里插入图片描述

🚀🚀要注意带符号整数是采用补码来表示的,所以才能得到表中的数值。


🚀🚀在不同的规则下,编译器处理默认常量的类型也不一样,具体如下所示。

🚀🚀这个是c90,无符号整型与long long类型有所区别。

在这里插入图片描述

🚀🚀在C99规则下,则没有无符号整型。

在这里插入图片描述

测试代码

#include<stdio.h>

void main ()
{
    int x=-1 ;
    unsigned int u = 2147483648 ;

    printf ("x = %u = %d\n", x, x) ;
    printf ("u = %u = %d\n", u, u) ;

    if (-2147483648<2147483647)
        printf ("-2147483648 < 2147483647 is true\n") ;
    else
        printf ("-2147483648 < 2147483647 is false\n") ;

    if (-2147483648-1 < 2147483647)
        printf ("-2147483648-1 < 2147483647\n") ;
    else if(-2147483648-1 == 2147483647)
        printf ("-2147483648-1 == 2147483647\n") ;
    else
        printf ("-2147483648-1 > 2147483647\n") ;
}

🚀🚀如果在C90标准下,2147483648为unsigned int型,因此 “-2147483648 < 2147483647”按无符号数比较, 10……0B比01……1B大,结果为false。

🚀🚀而在ISO C99标准下 ,2147483648为long long型,因此 “-2147483648 < 2147483647”按带符号整数比较,10……0B比01……1B小,结果为true。

🚀🚀最后在C90运行结果如下所示。

x = 4294967295 = -1
u = 2147483648 = -2147483648
-2147483648 < 2147483647 is false
-2147483648-1 == 2147483647

浮点数

🚀🚀在我们学习浮点数之前,我们需要简单回想一下的科学计数法,因为我们的浮点数表示方法与科学计数法是类似的,接下来我们会详细的进行介绍。

在这里插入图片描述

表示范围

🚀🚀我们首先看一下32位浮点数的存放格式,我们可以看到,我们的第0位S,是用来存放符号位的,一般用1表示负数,用0表示正数;然后第1~8位为8位移码表示阶码E(偏置常数为128);然后第9 ~31位为24位二进制原码小数表示的尾数M。

🚀🚀肯定有人有疑问了,9 ~ 31明明只有23个数,为什么能够表达24位呢?其实答案很简单,因为规格化尾数的小数点后第一位总是1,故规定第一位默认的“1”不明显表示出来。

在这里插入图片描述

🚀🚀所以,我们就能得到32位浮点数能够表示的范围了,当阶码与尾数都为1的时候,尾数就是0.11…1 ,也就是(1-2-24) ,然后阶码就是(28 - 1)- 128。以此类推,我们也能得到最小的正数。需要我们注意的是,原码是对称的,所以32位浮点数表示的范围关于原点对称。

🚀🚀我们也能发现一个问题,就是32位浮点数只能表示数轴上的一部分,其他部分都是属于溢出的范围。于是为了能表示更多有效数字,我们也可以规定规格化数的小数点前为1!但是在这里就不详细介绍了。

最大正数:0.11…1 x 211…1 = (1-2-24) x 2127

最小正数:0.10…0 x 200…0 = (1/2) x 2-128

在这里插入图片描述

IEEE 754标准

🚀🚀因为早期的计算机会各自定义自己的浮点数格式,所以为了解决不同计算机之间的数据传输,IEEE成立委员制定了浮点数标准,也就是我们现在的IEEE 754标准。目前所有通用计算机都采用IEEE 754来表示浮点数。

🚀🚀首先我们来看一看IEEE 754标准的规格化数是长什么样子的:

🚀🚀规格化数:+/-1.xxxxxxxxxxtwo x 2Exponent,规定:小数点前总是 “1”。

在这里插入图片描述

🚀🚀接下来我们就来简单的介绍一下,首先是第0位(Sign bit),用1表示负数,用0表示正数;然后第1~8位为8位移码表示阶码E(偏置常数为127),但是值得我们注意的就是,在SP规格化阶码范围为0000 0001 (-126) ~ 1111 1110 (127);然后第9 ~31位为24位二进制原码小数表示的尾数M,同样也是默认小数点前为0,所以就使用23位来代表24位。

🚀🚀阶码中的全0和全1用来表示特殊值!

例子

🚀🚀接下来呢,我们就讲解一个例子来加强我们的理解:已知float型变量x的机器数为BEE00000H,求x的值是多少?

  1. 数符部分为一,说明这个数为负数。
  2. 阶码为: 0111 1101B,也就是125,然后减去偏置常数127,于是得到阶码为-2.
  3. 尾数数值部分为:1 + 2-1 + 2-2 = 1.75。(1是默认的,然后前两位1分别是2-1 + 2-2
  4. 最后得到这个数值为:-1.75x2-2 = - 0.4375。

规格化数

🚀🚀我们前面介绍的都是针对规格化形式的数,那么还有一些我们没有介绍的,接下来就针对这些数进行一个介绍。

0

🚀🚀当我们的阶码和尾数都为0的时候,用来表示0,但是值得注意的是,这个地方是区分+0和-0的。

+∞/-∞

🚀🚀当阶码为全1,尾数为全0的时候这个时候表示的无穷,也是有正无穷和负无穷的区别的。而且在这里面,无穷也是可以参与运算的。

非数

🚀🚀当程序中出现一些不允许的运算时,得到的结果就是非数(NaN),比如:Sqrt (- 4.0)。这个时候就是阶码全为1,尾数不全为0.

非规格数

🚀🚀非规格化数,其实就是规格的数无法表达的数,所以他们就是阶码为0,尾数不全为0。也就是0.0…0x2-126~ 0.1…1x2-126

在这里插入图片描述

🚀🚀对于非数值数据我们就不介绍了,感兴趣的同学可以去了解一下。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年中国人工智能产业趋势报告

易观&#xff1a;尽管2022年人工智能市场发展活跃度不及预期&#xff0c;但2022年对人工智能产业来说无疑是令人激动的一年。年中由DALL-E 2以及其后Stable Diffusion和Midjourney等文本-图像生成模型引起公众对人工智能生成内容的大量关注&#xff0c;年末ChatGPT的横空出世刷…

硬件系统工程师宝典(13)-----PCB的布局“有讲究”

各位同学大家好&#xff0c;欢迎继续做客电子工程学习圈&#xff0c;今天我们继续来讲这本书&#xff0c;硬件系统工程师宝典。上篇我们说到EMC的标准以及提高EMC性能的一些常用方法。今天我们来看看PCB上模块的布局有什么讲究。 模块划分及布局 PCB上模块的划分和布局会影响到…

ATTCK v12版本战术实战研究—持久化(二)

一、前言前几期文章中&#xff0c;我们介绍了ATT&CK中侦察、资源开发、初始访问、执行战术、持久化战术的知识。那么从前文中介绍的相关持久化子技术来开展测试&#xff0c;进行更深一步的分析。本文主要内容是介绍攻击者在运用持久化子技术时&#xff0c;在相关的资产服务…

如何使用固态继电器为恒温器供电

恒温器有两种电源&#xff1a;电池和 24VAC。恒温器需要电池才能不间断地运行。电池消耗的能量尽可能低非常重要&#xff0c;但即使您最大限度地减少消耗&#xff0c;这仍然不是一个用户友好的选择&#xff0c;因为电池会不时需要更换。要降低更换频率&#xff0c;可以使用 24V…

Mysql InnoDB 存储引擎笔记

1 存储引擎 简介 Mysql 存储引擎有多种&#xff1a;包括 MyISAM、InnoDB 和 Memory。 其中MyISAM 和 INNODB 的区别&#xff1a; 事务安全&#xff08;MyISAM不支持事务&#xff0c;INNODB支持事务&#xff09;&#xff1b;外键 MyISAM 不支持外键&#xff0c; INNODB支持外…

渗透测试之地基服务篇:无线攻防之Kali自搭建钓鱼Wifi

简介 渗透测试-地基篇 该篇章目的是重新牢固地基&#xff0c;加强每日训练操作的笔记&#xff0c;在记录地基笔记中会有很多跳跃性思维的操作和方式方法&#xff0c;望大家能共同加油学到东西。 请注意 &#xff1a; 本文仅用于技术讨论与研究&#xff0c;对于所有笔记中复现…

【Python】控制自己的手机拍照,并自动发送到邮箱

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 今天这个案例&#xff0c;就是控制自己的摄像头拍照&#xff0c; 并且把拍下来的照片&#xff0c;通过邮件发到自己的邮箱里。 想完成今天的这个案例&#xff0c;只要记住一个重点&#xff1a;你需要一个摄像头 思路…

DCDC/LDO Auto-Discharge

1、概念 When using a capacitor with large capacity value in VOUT side, the VOUT pin voltage might not immediately fall to the ground level when the EN(CE,CONTROL) pin is switched from the active mode to the standby mode. By adding N-channel transistor to …

【Java|基础篇】计算机中数据的存储规则

文章目录前言:1.计算机中的数据2.二进制的介绍二进制的运算规则常见的进制3.字符的存储4.汉字的存储5.图片的存储6.音频的存储总结:前言: 本篇文章只是为了科普 计算机中数据的存储规则 1.计算机中的数据 计算机的数据大致分为三类:文本数据,图片和音频 注:视频是图片和音频…

代码随想录算法训练营day48 | 动态规划 121 买卖股票的最佳时机 122 买卖股票的最佳时机II

day48121. 买卖股票的最佳时机1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组122.买卖股票的最佳时机II121. 买卖股票的最佳时机 题目链接 解题思路&#xff1a; 动规五部曲分析如下&#xff1a…

PLC实验—西门子S7 1200读取旋转编码器数据并计算电机转速

PLC实验—西门子S7 1200读取旋转编码器数据并计算电机转速 注意PTO控制步进电机实验博途软件需要V14版本&#xff0c;不然没有PTO功能块 软件的下载请点击下方百度网盘的链接 链接&#xff1a;https://pan.baidu.com/s/11mQFVnaQxrUy4W9nGIk8Jw 提取码&#xff1a;6lva 详细的…

如何解决企业生产计划做不好,生产管理混乱?

现在很多企业都面临着生产计划做不好&#xff0c;生产管理混乱的问题&#xff0c;本文将为大家讲讲如何解决这些问题。要想解决问题&#xff0c;首先要知道其原因。 企业生产管理混乱原因 第一&#xff1a;企业的导向有问题 许多中小企业的老板都是业务出身&#xff0c;都知…

编程基本概念

程序的构成 python程序由模块组成&#xff0c;一个模块对应一个python源文件&#xff0c;后缀为.py模块由语句组成&#xff0c;运行python程序时&#xff0c;按照模块中的语句顺序依次执行语句是python程序的构造单元&#xff0c;用于创建对象&#xff0c;变量赋值&#xff0c…

K8s:Monokle Desktop 一个集Yaml资源编写、项目管理、集群管理的 K8s IDE

写在前面 Monokle Desktop 是 kubeshop 推出的一个开源的 K8s IDE相关项目还有 Monokle CLI 和 Monokle Cloud相比其他的工具&#xff0c;Monokle Desktop 功能较全面&#xff0c;涉及 k8s 管理的整个生命周期博文内容&#xff1a;Monokle Desktop 下载安装&#xff0c;项目管理…

LDR6028市面上最具有性价比的Type-C OTG音频协议方案

目前市面上的大部分手机都取消了3.5mm音频耳机接口&#xff0c;仅保留一个Type-C接口&#xff0c;但是追求音质和零延迟的用户仍然会选择3.5mm有线耳机&#xff0c;因为在玩手机游戏的时候&#xff0c;音画不同步真的很影响游戏体验&#xff0c;所以Type-C转3.5mm接口线应运而生…

软件测试---用例篇

一 : 内容概览 二 : 测试用例的基本要素 测试用例的概念 : 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素 . 好的测试用例是一个不熟悉业务的人…

GB28181监控视频统一汇聚平台LiveGBS将海康大华华为宇视等厂家监控设备统一接入后如何生成固定播放链接或者固定的流地址可以直接无插件播放或者拉取

目前汇聚各种厂家监控设备的视频汇聚平台&#xff0c;基本都是通过GB28181标准协议实现的。下面介绍下LiveGBS Web无插件直播的GB28181视频平台将各厂家&#xff08;包括海康、大华、华为、宇视、天地伟业等&#xff09;监控汇聚到同一个服务器上后&#xff0c;如何或者直播链接…

自动化测试实战篇(8),jmeter并发测试登录接口,模拟从100到1000个用户同时登录测试服务器压力

首先进行使用jmeter进行并发测试之前就需要搞清楚线程和进程的区别还需要理解什么是并发、高并发、并行。还需要理解高并发中的以及老生常谈的&#xff0c;TCP三次握手协议和TCP四次握手协议**TCP三次握手协议指&#xff1a;****TCP四次挥手协议&#xff1a;**进入Jmeter&#…

【概念辨析】结构体内存对齐

一、什么是结构体内存对齐 是使得结构体的每个成员能够在及其访问的特定存储单元上的一种方法。 通过这种方法可以使得机器访问效率加快&#xff0c;也可以使得平台一致性变高。 二、结构体对齐的规则 有两组代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS#include <…

【微信小程序】-- 页面配置(十八)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…