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

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

 

一、整形的存储形式

 

原码、反码和补码

 

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

 

原码是数值的直观二进制表示,最高位为符号位,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标准存储,适合表示实数,但存在精度问题。理解它们的存储形式,能帮我们在编程时合理选择数据类型,避免潜在问题,编写出更优质的程序。无论是大型软件开发,还是科学计算,这些基础知识都是坚实的后盾。

 

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

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

相关文章

无人机PX4飞控 | PX4源码添加自定义uORB消息并保存到日志

PX4源码添加自定义uORB消息并保存到日志 0 前言 PX4的内部通信机制主要依赖于uORB&#xff08;Micro Object Request Broker&#xff09;&#xff0c;这是一种跨进程的通信机制&#xff0c;一种轻量级的中间件&#xff0c;用于在PX4飞控系统的各个模块之间进行高效的数据交换…

QMK启用摇杆和鼠标按键功能

虽然选择了触摸屏&#xff0c;我仍选择为机械键盘嵌入摇杆模块&#xff0c;这本质上是对"操作连续性"的执着。   值得深思的是&#xff0c;本次开发过程中借助DeepSeek的代码生成与逻辑推理&#xff0c;其展现的能力已然颠覆传统编程范式&#xff0c;需求描述可自动…

Rust 所有权特性详解

Rust 所有权特性详解 Rust 的所有权系统是其内存安全的核心机制之一。通过所有权规则&#xff0c;Rust 在编译时避免了常见的内存错误&#xff08;如空指针、数据竞争等&#xff09;。本文将从堆内存与栈内存、所有权规则、变量作用域、String 类型、内存分配、所有权移动、Cl…

基于深度学习的视觉检测小项目(十七) 用户管理后台的编程

完成了用户管理功能的阶段。下一阶段进入AI功能相关。所有的资源见文章链接。 补充完后台代码的用户管理界面代码&#xff1a; import sqlite3from PySide6.QtCore import Slot from PySide6.QtWidgets import QDialog, QMessageBoxfrom . import user_manage # 导入使用ui…

ubuntuCUDA安装

系列文章目录 移动硬盘制作Ubuntu系统盘 前言 根据前篇“移动硬盘制作Ubuntu系统盘”安装系统后&#xff0c;还不能够使用显卡。 如果需要使用显卡&#xff0c;还需要进行相关驱动的安装&#xff08;如使用的为Nvidia显卡&#xff0c;就需要安装相关的Nvidia显卡驱动&#xff…

Docker Compose的使用

文章首发于我的博客&#xff1a;https://blog.liuzijian.com/post/docker-compose.html 目录 Docker Compose是什么Docker Compose安装Docker Compose文件Docker Compose常用命令案例&#xff1a;部署WordPress博客系统 Docker Compose是什么 Docker Compose是Docker官方的开源…

【深度分析】DeepSeek 遭暴力破解,攻击 IP 均来自美国,造成影响有多大?有哪些好的防御措施?

技术铁幕下的暗战&#xff1a;当算力博弈演变为代码战争 一场针对中国AI独角兽的全球首例国家级密码爆破&#xff0c;揭开了数字时代技术博弈的残酷真相。DeepSeek服务器日志中持续跳动的美国IP地址&#xff0c;不仅是网络攻击的地理坐标&#xff0c;更是技术霸权对新兴挑战者的…

使用python实现与本地ollama部署的deepseek对话

专栏总目录 按照ollama官方doc的example操作&#xff0c;没有成功与本地ollama上的deepseek-r1:1.5b通讯后&#xff0c;发现vscode可以调用本地ollama上的deepseek模型。 为了实现与ollama上的deepseek模型通讯&#xff0c;我使用wireshark对本地回环地址进行侦听后&#xff0c…

基于STM32的智能健康监测手环

1. 引言 随着可穿戴设备的普及&#xff0c;健康监测技术正逐步融入日常生活。本文设计了一款基于STM32的智能健康监测手环&#xff0c;能够实时采集用户心率、血氧饱和度、体温及运动数据&#xff0c;并通过低功耗蓝牙&#xff08;BLE&#xff09;与手机APP交互。该系统结合了…

OpenGL学习笔记(六):Transformations 变换(变换矩阵、坐标系统、GLM库应用)

文章目录 向量变换使用GLM变换&#xff08;缩放、旋转、位移&#xff09;将变换矩阵传递给着色器坐标系统与MVP矩阵三维变换绘制3D立方体 & 深度测试&#xff08;Z-buffer&#xff09;练习1——更多立方体 现在我们已经知道了如何创建一个物体、着色、加入纹理。但它们都还…

麦芯(MachCore)应用开发教程5 --- 工位和晶圆传输

麦芯是构建在windows系统上的设备应用操作系统&#xff0c;利用该系统可以快速高效的开发一款设备专用软件。希望进一步了解请email: acloud163.com 黄国强 2025/02/03 一、工位与子设备的关系 想象工厂中的流水线工作站&#xff0c;每个工位&#xff08;Station&#xff09…

冰蝎v3.0 beta7来啦

我用了一台kali&#xff0c;一台centos&#xff0c;一台windows&#xff0c;做了一个文件上传和一个反弹shell实验&#xff0c;载荷是AES加密的&#xff0c;终于感受到了对加密流量的无可奈何~ kali&#xff08;php8.1&#xff09;centos&#xff08;php7.1&#xff09;window…

Golang 并发机制-5:详解syn包同步原语

并发性是现代软件开发的一个基本方面&#xff0c;Go&#xff08;也称为Golang&#xff09;为并发编程提供了一组健壮的工具。Go语言中用于管理并发性的重要包之一是“sync”包。在本文中&#xff0c;我们将概述“sync”包&#xff0c;并深入研究其最重要的同步原语之一&#xf…

【PyQt】超级超级笨的pyqt计算器案例

计算器 1.QT Designer设计外观 1.pushButton2.textEdit3.groupBox4.布局设计 2.加载ui文件 导入模块&#xff1a; sys&#xff1a;用于处理命令行参数。 QApplication&#xff1a;PyQt5 应用程序类。 QWidget&#xff1a;窗口基类。 uic&#xff1a;用于加载 .ui 文件。…

Flutter Scaffold 页面结构

Material是一套设计风格&#xff0c;提供了大量的小部件&#xff0c;这里用Material风格搭建一个常见的应用页面结构。 创建Material应用 import package:flutter/material.dart;class App extends StatelessWidget {overrideWidget build(BuildContext context) {return Mat…

2月3日星期一今日早报简报微语报早读

2月3日星期一&#xff0c;农历正月初六&#xff0c;早报#微语早读。 1、多个景区发布公告&#xff1a;售票数量已达上限&#xff0c;请游客合理安排行程&#xff1b; 2、2025春节档总票房破70亿&#xff0c;《哪吒之魔童闹海》破31亿&#xff1b; 3、美宣布对中国商品加征10…

大模型本地化部署(Ollama + Open-WebUI)

文章目录 环境准备下载Ollama模型下载下载Open-WebUI 本地化部署的Web图形化界面本地模型联网查询安装 Docker安装 SearXNG本地模型联网查询 环境准备 下载Ollama 下载地址&#xff1a;Ollama网址 安装完成后&#xff0c;命令行里执行命令 ollama -v查看是否安装成功。安装成…

10 Flink CDC

10 Flink CDC 1. CDC是什么2. CDC 的种类3. 传统CDC与Flink CDC对比4. Flink-CDC 案例5. Flink SQL 方式的案例 1. CDC是什么 CDC 是 Change Data Capture&#xff08;变更数据获取&#xff09;的简称。核心思想是&#xff0c;监测并捕获数据库的变动&#xff08;包括数据或数…

【25考研】南开软件考研复试复习重点!

一、复试内容 复试采取现场复试的方式。复试分为笔试、机试和面试三部分。三部分合计100分&#xff0c;其中笔试成绩占30%、机试成绩占30%、面试成绩占40%。 1.笔试&#xff1a;专业综合基础测试 考核方式&#xff1a;闭卷考试&#xff0c;时长为90分钟。 笔试考查内容范围…

【Cadence仿真技巧学习笔记】求解65nm库晶体管参数un, e0, Cox

在设计放大器的第一步就是确定好晶体管参数和直流工作点的选取。通过阅读文献&#xff0c;我了解到L波段低噪声放大器的mos器件最优宽度计算公式为 W o p t . p 3 2 1 ω L C o x R s Q s p W_{opt.p}\frac{3}{2}\frac{1}{\omega LC_{ox}R_{s}Q_{sp}} Wopt.p​23​ωLCox​Rs…