<c语言学习> 整数和浮点数的存储方式

1.整数

有符号整数

第一位为符号位 1代表负数 0代表正数

  举例: signed char  

      8  --------------------->     0000 1000

      -8 ---------------------->     1111 1000 (补码形式存储)

 补码存储(计算)的妙处:

                举例:-8 + 8  = 0 ------>    1111 1000 + 0000 1000 = 1 0000 0000   (左边的1被挤出去)

signed short , signed int      同理

溢出情况举例:

        signed char A = 127   ----------------------- >    A = 01111111

        A+1 = -128   ----------------------->01111111 + 1 = 10000000      ( -128 = 10000000 )

同理:

        signed char A = -128 ------------------------> A = 10000000

        A-1 = 127 ----------------------->10000000 - 1 = 01111111     ( 127 = 01111111)

无符号整数

        没有符号位的说法 例如unsiged char 取值范围为 0~255

        举例: unsigned char  

                254 --------> 1111 1110

        溢出情况举例:

                与有符号类似: 

                unsigned char A = 254

                A+2 = 1 ----------------------> 1111 1110 + 0000 0010 = 1 0000 0001 (左边的1被挤掉)

2.浮点数 

浮点数存储:类似科学计数法    
 

        科学计数法:

                三个部分:正负号;

                                  有效数据(范围是1~10)

                                   位数  10 ^ n

        浮点数的三个部分(S, E, M):

                S 表示符号   E表示位数(理解为小数点的偏移量)  M表示有效数字:

                32位F(float):1S 8E 23M  : 第1位表示正负   接下来8位表示小数点位置  最后23位代表有效数字;
                64位D(double):1S 11E 52M   : 与32位同理 ,1位正负  11位表述小数点位置  最后52位代表数字;

                以float举例:

                S:


                S为1代表负数  为0代表正数    :可看做(-1)^S

                E:

                E是无符号整数:E取值范围:0~255  中间数为127   ,E的值减去127为实际偏移量,实际偏移量范围:-127~128

                例如:当E为128 实际偏移量为128-127 = 1,表示小数点向右移动一位

                (double类型 :E有11位二进制数, 可表示小数点偏移量为:-1023~1024)

                E的三种情况:
                E全1:表示无穷大
                E全0:有效数字M由1.xxxxxx 变为 0.xxxxx  此时该浮点数表示正负0(无限趋近0)

                E不全为0或不全为1则正常计算

                M:

                M表示有效数字,表示的数字范围为:1<=M<=2

                M的含义:

                        当M 为 1111 1111 0000 0000 0000 000 时,实际含义为1.1111 1111(二进制) ,其中小数点左边的1被省略 读取时自动加上

                        至于为什么省略,是因为小数点左边那个数字永远是1,所以可以省。

                举例:

                - 0. 125   以float形式存储

                        S为1  (-0.125 为负数)

                        S的二进制表示为1

                        M为 0(表示有效数字为1.0000 0000 0000 0000 0000 000)

                        M的二进制表示为0000 0000 0000 0000 0000 000

                        E为 124 (表示小数点偏移为-3 ) E 减去127表示实际偏移量

                        E的二进制表示为 0111 1100

                       综上, -0.125实际存储为:

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

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

相关文章

Discourse 分类图片

我们可以在 Discourse 上为分类添加图片。 进入分类编辑界面&#xff0c;然后选择 Image 标签。 在 Images 标签下&#xff0c;上传分类需要的图片。 图片大小 图片的大小是 Discourse 进行控制的&#xff0c;高度为 150 PX 像素。 如果上传的图片大于 150 px 的高度像素&…

【JavaSE】类与对象

前言 Java是一门纯面向对象的语言&#xff0c;在面向对象的世界里&#xff0c;一切都为对象。它是解决问题的一种思想&#xff0c;主要依靠对象之间的交互完成一件事情。类与对象是我们学习面向对象最基础的知识&#xff0c;是面向对象实现的基石&#xff0c;可见它是有多么重…

打破数据孤岛,TDengine 与 Tapdata 实现兼容性互认证

当前&#xff0c;传统行业正面临着数字化升级的紧迫需求&#xff0c;但海量时序数据的处理以及数据孤岛问题却日益突出。越来越多的传统企业选择引入时序数据库&#xff08;Time Series Database&#xff0c;TSDB&#xff09;升级数据架构&#xff0c;同时&#xff0c;为了克服…

cesium 动态立体墙效果

cesium 动态立体墙效果 以下为源码直接复制可用 实现效果 实现思路 通过修改“material”自定义材质实现动态效果 核心类(WallImageTrailMaterialProperty)自定义材质 class WallImageTrailMaterialProperty {constructor(options) {this

推荐一款好用的前端分页插件jqPaginator

jqPaginator 简洁、高度自定义的jQuery分页组件&#xff0c;适用于多种应用场景。 现在网上各种各样的分页组件很多&#xff0c;但是很难找到十分“称心如意”的&#xff0c;于是jqPaginator诞生了。 我心中理想的分页组件&#xff0c;要不受CSS框架限制&#xff0c;可以使用…

汽车电子零部件(6):DMS/OMS、CMS

前言: 有一个部件过去不曾有,而如今有可能要标准化标配化,那就是Driver Monitoring System (DMS)驾驶员监控系统、Occupant Monitoring System (OMS)乘客监控系统和Camera Monitor System(CMS)摄像头监控系统。 汽车视觉技术的创新推动先进驾驶辅助系统的变革(ADAS),并…

力扣39. 组合总和

Problem: 39. 组合总和 文章目录 题目描述思路及解题方法复杂度Code 题目描述 思路及解题方法 该问题是组合问题的一个变体&#xff0c;可以归纳为元素无重复可复选问题&#xff0c;其代码的实现几乎和组合问题一模一样&#xff0c;由于在组合问题中我们只需要利用一个变量在递…

汽车电子与软件架构概述

汽车电子与软件架构概述 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师 (Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎,出门靠自己…

C语言 数据在内存中的存储

目录 前言 一、整数在内存中的存储 二、大小端字节序和字节序判断 2.1.练习一 2.2 练习二 2.3 练习三 2.4 练习四 2.5 练习五 2.6 练习六 三、浮点数在内存中的存储 3.1 浮点数存的过程 3.2 浮点数取的过程 总结 前言 数据在内存中根据数据类型有不同的存储方式&#xff0c;今…

jvm调优实战操作

1.什么是jvm jvm就是lava虚拟机&#xff0c;他是java运行环境的一部分&#xff0c;它虚构出来的一台计算机&#xff0c;在通过在实际的计算机上仿真模拟各种计算机功能来实现Java应用程序&#xff0c;有JVM从软件层面屏蔽了底层硬件、指令层面的细节让他兼容各种系统 2.我们调…

【matlab】如何批量修改图片命名

【matlab】如何批量修改图片命名 (●’◡’●)先赞后看养成习惯😊 假如我的图片如下,分别是1、2、3、4、5的命名 需求一:假如现在我需要在其后面统一加上_behind字符串,并且保留原命名,同时替换掉原先的图片,也就是不copy新的一份,直接在原文件夹中处理,我们可以进行…

设计模式 — — 单例模式

一、是什么 单例模式只会在全局作用域下创建一次实例对象&#xff0c;让所有需要调用的地方都共享这一单例对象 二、实现 // 单例构造函数 function CreateSingleton (name) {this.name name;this.getName(); };// 获取实例的名字 CreateSingleton.prototype.getName func…

MyBatis是纸老虎吗?(三)

上篇文章——《MyBatis是纸老虎吗&#xff1f;&#xff08;二&#xff09;》——梳理了MyBatis的执行流程&#xff0c;这篇文章想详细聊聊MyBatis的解析过程。当我把这个想法讲个同事时&#xff0c;他不可置信的说道&#xff1a;“这有什么好梳理的&#xff1f;难道你要介绍xml…

WorkPlus Meet局域网视频会议软件的领先解决方案

局域网视频会议软件在现代企业中发挥着重要的作用&#xff0c;而在众多选项中&#xff0c;为何选择WorkPlus Meet作为局域网视频会议软件&#xff1f; 选择局域网视频会议软件时需要考虑到企业的需求。WorkPlus Meet提供了稳定、高效的局域网视频会议功能&#xff0c;能够满足…

粤嵌6818嵌入式开发入门教程

学习目标 1.了解嵌入式开发 2.开发环境的搭建 3.Linux操作系统的基本操作 一、了解嵌入式开发 以应用为中心&#xff0c;以计算机技术为基础&#xff0c;软硬件可裁剪&#xff0c;适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 1.嵌入式可以干…

面部表情参考图

创造表情形变 | Character Creator | Reallusion 皮笑肉不笑&#xff1f;读取情绪的AI说&#xff1a;我太难了_面部

Vue.js+SpringBoot开发农家乐订餐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核心代码4.1 查询菜品类型4.2 查询菜品4.3 加购菜品4.4 新增菜品收藏4.5 新增菜品留言 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的农家乐订餐系统&#xff0c…

详细分析Java中的BeanCopier属性复制(附Demo)

目录 前言1. 基本知识2. 同属性Demo3. 不同属性Demo4. 实战场景 前言 基本知识推荐阅读&#xff1a; 浅拷贝和深拷贝的深度理解java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&…

PHP魔术方法详解

php魔术方法是一些特殊的方法&#xff0c;由特定的环境来进行触发。 这些魔术方法让开发者能够更好地控制对象的行为&#xff0c;特别是在处理不常见的操作或者需要自动化处理某些任务时非常有用。 1、_construct()构造函数&#xff1a; <?php highlight_file(__FILE__);…

小白DB补全计划Day1-LeetCode:SQL基本操作select

前言&#xff1a;找工作&#xff08;主人&#xff09;的任务罢了 链接&#xff1a;1757. 可回收且低脂的产品 - 力扣&#xff08;LeetCode&#xff09; 584. 寻找用户推荐人 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 对DB篇的SQL章不太知道怎么写…