整形的存储形式和浮点型在计算机中的存储形式

在计算机科学的底层世界里,数据存储是基石般的存在。不同数据类型,如整形与浮点型,其存储方式犹如独特的密码,隐藏着计算机高效运行的秘密。理解它们,是深入掌握编程与计算机原理的关键。

 

一、整形的存储形式

 

原码、反码和补码

 

计算机存储整形数据,通常以二进制补码形式。在此之前,先了解原码和反码。

 

原码是数值的直观二进制表示,最高位为符号位,0代表正数,1代表负数。以8位二进制表示整数为例,+5的原码是00000101,-5的原码是10000101 。

 

反码计算规则:正数反码与原码相同,负数反码是原码除符号位外各位取反。所以,-5的反码是11111010。

 

补码则是在反码基础上,正数补码同原码,负数补码是反码最低位加1。因此,-5的补码为11111011。

 

使用补码存储的原因

 

补码存储优势显著。其一,简化运算规则,将减法转换为加法。比如计算5 - 3,可变为5 + (-3),利用补码做加法,统一了加减法运算,降低硬件实现复杂度。其二,解决0的表示唯一性问题。原码和反码中,0有+0和-0两种表示,补码中0仅有一种表示00000000,让运算更便捷、统一。

 

不同类型的整形存储

 

常见整形类型有short、int、long等,占用字节数不同。32位系统中,short一般占2字节(16位),int占4字节(32位),long占4字节(64位系统中,long可能占8字节 )。不同位数决定了它们表示数值范围不同。如16位short类型,范围是-32768到32767,最高位为符号位,剩下15位表示数值,最小值是1000000000000000(即-32768),最大值是0111111111111111(即32767)。

 

代码示例

#include <stdio.h>

 

int main() {

    short num1 = -5;

    int num2 = 10;

    long num3 = 100000L;

 

    // 输出数据的值

    printf("short类型的num1值为: %d\n", num1);

    printf("int类型的num2值为: %d\n", num2);

    printf("long类型的num3值为: %ld\n", num3);

 

    return 0;

}

这段C语言代码展示了不同整形类型的使用。通过 printf 函数输出它们的值,让我们直观看到整形数据的存储和使用方式。运行代码,会在控制台输出各变量的值。

 

[此处插入运行上述代码的控制台截图,展示代码运行结果]

 

二、浮点型的存储形式

 

IEEE 754标准

 

现代计算机存储浮点型数据多遵循IEEE 754标准。它将浮点型数据表示为符号位(S)、指数位(E)和尾数位(M)三部分。

 

单精度浮点型(float,占4字节,32位),符号位占1位,指数位占8位,尾数位占23位。

 

双精度浮点型(double,占8字节,64位),符号位占1位,指数位占11位,尾数位占52位。

 

存储格式的转换

 

把十进制浮点数转换为IEEE 754标准存储格式,步骤如下:先确定符号位,正数为0,负数为1;再将小数部分转二进制,如0.625二进制是0.101;接着规范化二进制数为1.xxxx \times 2^n形式,0.625规范化后是1.01 \times 2^{-1} ,指数n为-1;最后,指数部分加偏移量(单精度偏移量127,双精度偏移量1023)得存储用指数位。此例中,-1加127得126,即指数位为01111110 ,尾数位是规范化后小数部分去掉整数部分1,即01。所以,0.625单精度浮点型存储形式为0 01111110 01000000000000000000000。

 

浮点型存储的精度问题

 

因尾数位位数有限,浮点型存储存在精度问题。比如十进制0.1,二进制是无限循环小数0.0001100110011\cdots ,有限尾数位下只能近似存储,导致浮点数运算可能有精度误差。如一些编程语言中,0.1 + 0.2结果不精确等于0.3,而是接近0.3的近似值。

 

代码示例

python

a = 0.1

b = 0.2

print(a + b)

这段Python代码简单演示了浮点数运算的精度问题。运行代码,输出结果并非精确的0.3,而是近似值,体现浮点型存储的精度限制。

[此处插入运行上述Python代码的控制台截图,展示精度误差的结果]

 

三、总结

整形和浮点型在计算机存储形式上截然不同。整形以补码存储,用于精确存储整数,运算规则简单。浮点型遵循IEEE 754标准存储,适合表示实数,但存在精度问题。理解它们的存储形式,能帮我们在编程时合理选择数据类型,避免潜在问题,编写出更优质的程序。无论是大型软件开发,还是科学计算,这些基础知识都是坚实的后盾。

 

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

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

相关文章

Python网络自动化运维---批量登录设备

文章目录 目录 文章目录 前言 实验准备 一.批量登录 IP 连续的设备 1.1.1 实验代码 1.1.2 代码分段分解 1.1.3 实验结果验证 二.批量登录 IP 不连续的设备 2.2.1 实验代码 2.2.2 代码分段分解 2.2.3 实验结果验证 前言 在生产环境中&#xff0c;我们通常需要登录多个设备…

selenium记录Spiderbuf例题C03

防止自己遗忘&#xff0c;故作此为记录。 鸢尾花数据集(Iris Dataset) 这道题牵扯到JS动态加载。 步骤&#xff1a; &#xff08;1&#xff09;进入例题&#xff0c;需要找到按钮规律。 flip_xpath: str r"//li/a[onclickgetIrisData({});]" &#xff08;2&…

【C++篇】位图与布隆过滤器

目录 一&#xff0c;位图 1.1&#xff0c;位图的概念 1.2&#xff0c;位图的设计与实现 1.5&#xff0c;位图的应用举例 1.4&#xff0c;位图常用应用场景 二&#xff0c;布隆过滤器 2.1&#xff0c;定义&#xff1a; 2.2&#xff0c;布隆过滤器的实现 2.3&#xff0c; 应…

基于SpringBoot的新闻资讯系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

Spring Boot 2 快速教程:WebFlux处理流程(五)

WebFlux请求处理流程 下面是spring mvc的请求处理流程 具体步骤&#xff1a; 第一步&#xff1a;发起请求到前端控制器(DispatcherServlet) 第二步&#xff1a;前端控制器请求HandlerMapping查找 Handler &#xff08;可以根据xml配置、注解进行查找&#xff09; 匹配条件包括…

C基础寒假练习(2)

一、输出3-100以内的完美数&#xff0c;(完美数&#xff1a;因子和(因子不包含自身)数本身 #include <stdio.h>// 函数声明 int isPerfectNumber(int num);int main() {printf("3-100以内的完美数有:\n");for (int i 3; i < 100; i){if (isPerfectNumber…

react-bn-面试

1.主要内容 工作台待办 实现思路&#xff1a; 1&#xff0c;待办list由后端返回&#xff0c;固定需要的字段有id(查详细)、type(本条待办的类型)&#xff0c;还可能需要时间&#xff0c;状态等 2&#xff0c;一个集中处理待办中转路由页&#xff0c;所有待办都跳转到这个页面…

GRN前沿:利用DigNet从scRNA-seq数据中生成基于扩散的基因调控网络

1.论文原名&#xff1a;Diffusion-based generation of gene regulatory network from scRNA-seq data with DigNet 2.出版时间&#xff1a;2024.12.18 3.doi: 10.1101/gr.279551.124 摘要&#xff1a; 基因调控网络&#xff08;GRN&#xff09;在细胞内基因的身份和功能之间…

AnswerRocket:通过 AI 辅助简化分析

AnswerRocket是一家专注于人工智能驱动数据分析和商业智能的领先企业&#xff0c;其核心产品是一款增强型分析平台&#xff0c;旨在通过自然语言处理&#xff08;NLP&#xff09;、机器学习&#xff08;ML&#xff09;和生成式AI技术&#xff0c;简化复杂数据的分析过程&#x…

小程序设计和开发:如何研究同类型小程序的优点和不足。

一、确定研究目标和范围 明确研究目的 在开始研究同类型小程序之前&#xff0c;首先需要明确研究的目的。是为了改进自己的小程序设计和开发&#xff0c;还是为了了解市场趋势和用户需求&#xff1f;不同的研究目的会影响研究的方法和重点。例如&#xff0c;如果研究目的是为了…

我的AI工具箱Tauri版-ZoomImageSDXL全图超清放大TILE+SDXL

本教程基于自研的AI工具箱Tauri版进行ComfyUI工作流ZoomImageSDXL全图超清放大TILESDXL。 ZoomImageSDXL全图超清放大TILESDXL 借助ControlNet的Tile技术与SDXL大模型&#xff0c;该工具能够在放大图像的同时&#xff0c;精准还原细节和纹理&#xff0c;确保输出效果既清晰锐利…

Java设计模式:行为型模式→状态模式

Java 状态模式详解 1. 定义 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为。状态模式通过将状态需要的行为封装在不同的状态类中&#xff0c;实现对象行为的动态改变。该模式的核心思想是分离不同状态…

蓝桥与力扣刷题(234 回文链表)

题目&#xff1a;给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#xff1a; 输入&…

【面经】字节南京一面部分题目记录

南京字节一面题&#xff0c;可能因为项目不太匹配&#xff0c;全程八股比较多&#xff0c;也有两道手撕代码题&#xff0c;强度还是有的。为了方便大家学习&#xff0c;大部分答案由GPT整理&#xff0c;有些题给出了我认为回答比较好的博客链接。 文章目录 一、python2 和 pyth…

【C语言篇】“三子棋”

一、游戏介绍 三子棋&#xff0c;英文名为 Tic - Tac - Toe&#xff0c;是一款简单而经典的棋类游戏。游戏在一个 33 的棋盘上进行&#xff0c;两名玩家轮流在棋盘的空位上放置自己的棋子&#xff08;通常用 * 和 # 表示&#xff09;&#xff0c;率先在横、竖或斜方向上连成三个…

vscode软件操作界面UI布局@各个功能区域划分及其名称称呼

文章目录 abstract检查用户界面的主要区域官方文档关于UI的介绍 abstract 检查 Visual Studio Code 用户界面 - Training | Microsoft Learn 本质上&#xff0c;Visual Studio Code 是一个代码编辑器&#xff0c;其用户界面和布局与许多其他代码编辑器相似。 界面左侧是用于访…

【B站保姆级视频教程:Jetson配置YOLOv11环境(六)PyTorchTorchvision安装】

Jetson配置YOLOv11环境&#xff08;6&#xff09;PyTorch&Torchvision安装 文章目录 1. 安装PyTorch1.1安装依赖项1.2 下载torch wheel 安装包1.3 安装 2. 安装torchvisiion2.1 安装依赖2.2 编译安装torchvision2.2.1 Torchvisiion版本选择2.2.2 下载torchvisiion到Downloa…

于动态规划的启幕之章,借 C++ 笔触绘就算法新篇

注意&#xff1a;代码由易到难 P1216 [IOI 1994] 数字三角形 Number Triangles 题目链接&#xff1a;[IOI 1994] 数字三角形 Number Triangles - 洛谷 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径&#xff0c;使路径经过数字的和最大。每…

分页按钮功能

前言 在前端开发中&#xff0c;分页功能是一个常见的需求&#xff0c;特别是当需要展示大量数据时&#xff0c;它能有效提升用户体验。该文章结合运用了HTML&#xff0c;CSS&#xff0c;JS实现网页的分页按钮功能&#xff0c;并且可以选择每页显示的条数试试更新总页数及显示当…

SAP HCM 回溯分析

最近总有人问回溯问题&#xff0c;今天把12年总结的笔记在这共享下&#xff1a; 12年开这个图的时候总是不明白是什么原理&#xff0c;教程看N次&#xff0c;网上资料找一大堆&#xff0c;就是不明白原理&#xff0c;后来为搞明白逻辑&#xff0c;按照教材的数据一样做&#xf…