首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C语言】强制类型转换的原理

,所以存储形式是不会变得,而我们现在却改变了读取方式,我们用双精度的形式来读取这个二进制代码,分别读取他的符号位,指数位,有效位,所以我们打印出来的数,其实就是用读取浮点的方法来读出整型5的二进制代码...,其实就是a的二进制代码按照浮点的形式拿出来,然后进行打印,如果你想要知道这个打印的结果的话,你必须写出来他的二进制代码,然后将其按照浮点中表示方法的对应比特位的个数拿出来,最后进行结果读取 1.3...a原来在内存里面表达14.99的浮点二进制代码形式,将其改变为表达15的整型二进制代码形式 2.2 标准形式 int main() { int a = 1234567890; float f =...(1234567890)将它的二进制代码存到栈区里面,然后我们要将其存到浮点变量f里面,所以这时就又按照浮点的格式存到内存里面了(表达的1234567890.000000),但此时它在内存中的存储方式已经改变了...,他变成能表达1234567890.000000这样的浮点数字的二进制代码了,不是原来表达1234567890 这样的整型数字的二进制代码了,所以我们打印结果就变成了1234567890.000000

1.3K10

数据在内存中的存储(2)

二、两类浮点数据(float、double)在内存中的存储方式 2.1两类浮点数据的存储模型 根据IEEE754标准规定,浮点数据的存储和读取按照公式: Value浮点数据的二进制值 S表示浮点数据的正负...但是,IEEE754标准中规定E一个无符号整型现实中科学计数法指数位E可能为负数,因此,这里引入了中间值的概念。...图4.1 展示了整型数据 int n = 9 在内存中的存储形式,若以浮点数据的视角去读数,则,,E的二进制位全部0,由3.5.2中提到的知识,E的二进制位全为0时表示一个无穷小的数据,且以%f...这是因为 n1 = 9.0 以浮点数据的存储方式存入到了内存中(存储方式如图4.2所示),但在读取并打印这个数据的时候,却是对一个整型指针进行解应用,9.0以整型数据的视角进行读取和打印。...故打印结果: 四、总结 本文详细介绍了单精度浮点数据和双精度浮点数据在内存中存储的方法,给出了浮点数据的存储模型和读取模型,并以案例的形式进行了介绍。浮点数据可表示: 。

10810
您找到你想要的搜索结果了吗?
是的
没有找到

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

---- 前言 不同的数据在内存中的存储形式是不同的,当我们掌握数据在内存中的存储形式之后,会帮助我们更加了解计算机深层工作原理 废话不多说,我们接下来直接进入正题 一:数据类型详细介绍 ##1....1,当发生截断后存储在变量abc中的内存形式均为11111111,但打印的是int的十进制数字,所以要进行整型提升。...11111111 11110110 读取i+j的结果强制输出有符号数,则我们想要知道结果,就得先把它转换为原码,原码就是我们能够看到的输出结果,现在我们进行原码的读取(写的好累啊),i+j的反码...但当我们打印浮点数时,我们在存储和读取是于int是不同的,符号位是0,指数位也是0,因为指数位是全0,那么属于读取的第二种情形,浮点数表示0.92^-126,这个数字表示非常小的数字,机器就会输出...3.3总结整数和浮点数在存储时的一些区别 在小数部分的存储,我们直接浮点数二进制表示形式下的小数部分存到23比特位的部分即可(或者52比特位),在读取时我们也直接将其整体拿出来加上个1就是二进制形式下的浮点数表达了

98620

变量以及数据类型_数据类型定义

整型的使用细节 浮点类型 基本介绍 浮点类型 说明一下: 浮点使用细节 字符类型 基本介绍 字符类型使用细节 字符类型本质探讨 布尔类型 基本介绍 变量的相关概念 为什么需要变量 不论是使用哪种高级程序语言编写程序...,把变量b 值输出 %d 表示输出的形式整数 getchar(); //控制台停留,等待输入 } 变量的介绍 概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间...浮点使用细节 浮点常量默认为double , 声明float常量时, 须后加‘f’或‘F’。...a’——>读取(显示) 字符和码值的对应关系是通过字符编码表决定的(是规定好) 布尔类型 基本介绍 C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0假,非0真 [案例] 但这种做法不直观...C语言标准(C99)提供了_Bool , _Bool仍是整数类型,但与一般整型不同的是,_Bool变量只能赋值0或1,非0的值都会被存储1, C99还提供了一个头文件 定义了

96510

【Java】Java的基本类型解读

在Java中,基本类型分为四种主要类型:整型浮点、字符和布尔。下面分别介绍这四种类型: 整型(int、short、byte、long): int: Java中最常用的整数类型。...short: 占用16位(2字节)内存,范围 -32,768 到 32,767。通常在内存有限或需节省内存空间时使用。 byte: 占用8位(1字节)内存,范围 -128 到 127。...注意事项: 在使用基本类型时,确实需要注意以下几点: 整型浮点的精度损失和溢出: 整型浮点数据在进行运算时,可能会出现精度损失或溢出的情况。...例如,对于浮点数进行大量的累加运算可能会导致精度损失,超出整型范围的数值运算则可能导致溢出。为了避免这些问题,可以使用适当的数据类型,并在必要时进行类型转换或使用更高精度的数据类型。...整型浮点运算中的类型转换: 在进行整型浮点之间的运算时,需要注意数据类型的自动转换规则。

6710

【C语言进阶】——深入剖析数据在内存中的存储

浮点内存中的存储 1....-128存储在内存中的补码1000 0000(截断),打印无符号整数时,整型提升,char有符号数,高位补符号位,即11111111 11111111 11111111 10000000,由于是打印无符号的整型...接下来讲解以下浮点是如何在内存中存储的。 4. 浮点内存中的存储 像float、double、long double…都属于浮点,接下来探究浮点是如何在内存中存储的。...比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点例,留给M只有23位,第一位的1舍去以后,等于可以保存24位有效数字。...指数E从内存中取出还可以再分成三种情况: 1、E不是全0,也不是全1 读取时先将E-127(1023),然后在前面有效数字M前面加个1 就比如读取上面的0 10000001 011 0000 0000

74430

C语言入门指南(3)(格式化输入输出)(包含scanf的读取方式)

如果后接的是浮点数据,那么这个.p决定的是保留浮点数据的小数点位,以一个代码例。...接着读取+,一个整型数据+不应该在数字后,所以+不符合,scanf函数读取的20放到第一个参数i中。不符合的+被放回输入缓冲区。....38e5存入浮点数据f中,-被放回输入缓冲区。接着读取的是%d,-符合整型的转换说明,被保留,8也符合转换说明,被保留。...我们以一个整型数据的100举例,我们要清楚一个数据是会按照二进制数存放在内存当中的,100在内存当中的存储形式00000000 00000000 00000000 01100100.如果我们用%d的来读取它...浮点读取是与整型截然不同的读取方法,如果用%f的形式来读取100只会得到0.000000(有兴趣可以去了解一下)。

15810

数据在内存中的储存

先来回顾一些C语言中的内置类型 类型 说明 int 整型 short 短整型 long 长整型 long long 更长整型 float 单精度浮点 double 双精度浮点 注意:C语言中无String...什么大端小端: 大端(存储)模式,是指数据的低位保存在内存的高地址中,数据的高位,保存在内存的低地址 中; 小端(存储)模式,是指数据的低位保存在内存的低地址中,数据的高位,,保存在内存的高地...例如:一个 16bit 的 short x ,在内存中的地址 0x0010 , x 的值 0x1122 ,那么 0x11 高字节, 0x22 低字节。...我们已经知道整型内存中存储的是补码,那么浮点是否也是这样呢?...; } 输出结果 由结果可知,浮点整型储存方式不一样,所以浮点数的储存方式是什么呢?

26320

数据存储以及内存

变量的值存储在这个地址对应的内存单元中。不同类型的变量在内存中占据不同大小的空间,例如整数变量通常占据4个字节的空间,字符变量通常占据1个字节的空间。...原码:直接数值按照正负数的形式翻译成⼆进制得到的就是原码。 反码:原码的符号位不变,其他位依次按位取反就可以得到反码。 补码:反码+1就得到补码。 我们知道,对于整型来说,数据存放的形式是补码。...⽐如保存1.01的时候,只保存01,等到读取的时候,再把第⼀位的1加上去。这样做的⽬的,是节省1位有效数字。以32位浮点例,留给M只有23位,第⼀位的1舍去以后,等于可以保存24位有效数字。...字符 字符的数据在内存中存储的方式取决于编程语言和计算机体系结构。在C语言中,字符数据被存储ASCII码或Unicode编码的字符。每个字符占据一个字节的内存空间。...当我们需要在程序中处理字符数据时,可以直接访问这些内存单元来读取或修改字符的值。

6510

C语言--数据存储

大端(存储)模式,是指数据的低位保存在内存的高地址中,数据的高位,保存在内存的低地址 中; 小端(存储)模式,是指数据的低位保存在内存的低地址中,数据的高位,,保存在内存的高地 址中。...例如:一个 16bit 的 short x ,在内存中的地址 0x0010 , x 的值 0x1122 ,那么 0x11 高字节, 0x22 低字节。...、浮点内存中的存储 通过上面,我们知道,整数在计算机里面的存储方式是根据二进制的原、反、补码来存储和使用的。那么,浮点数,是否也是用原反补呢?如果是用原反补,那么它的小数点是什么样的形式?...因此,浮点整型的区别是,整型是直接以二进制的形式存储,二浮点是使用了科学计数法,并且,要讲符号位、指数位和有效数字分开,分别是S、E、M。...比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点例,留给M只有23位,第一位的1舍去以后,等于可以保存24位有效数字。

1.7K20

C语言进阶-数据在内存中的存储

目录 前言 数据类型 C语言基本的内置类型 类型的意义 类型的基本归类 整形在内存中的存储 原码、反码、补码 意义 大小端 什么是大端小端  为什么有大端和小端 一道笔试题 练习 浮点内存中的存储...浮点内存中的存储解析 数据类型 ---- C语言基本的内置类型 char //字符数据类型 unsigned char //signed(有符号)/unsigned(无符号)...对于整形来说 数据存放内存中其实存放的是补码 数据的读取是使用原码 意义 在计算机系统中,数值一律用补码来表示和存储 使用补码可以符号位和数值域统一处理 同时加法和减法也可以统一处理(...大端:指数据的低位保存在内存的高地址中,数据的高(权)位,保存在内存的低地址中 小端:指数据的低位保存在内存的低地址中,数据的高(权)位,保存在内存的高地址中  为什么有大端和小端 计算机系统是以字节单位...*pFloat = 9.0; printf("num的值:%d\n",n); printf("*pFloat的值:%f\n",*pFloat); 解:int n = 9是以整型存储的视角9

85630

【揭秘】C语言类型转换时发生了什么?

; //定义基本的数据的类型 char c; short s; int i; long l; float f; double d; //整型浮点数据赋值给指针类型 pPoint.../定义基本的数据的类型 char c; short s; int i; long l; float f; double d; //整型浮点数据运算之后赋值给指针类型 pPoint.../定义基本的数据的类型 char c; short s; int i; long l; float f; double d; //整型浮点数据混合运算赋值给指针类型 pPoint...整型类型级别从低到高依次: int -> unsigned int -> long -> unsigned long -> long long -> unsigned long long 浮点级别从低到高依次...总结强调一点 进行强制类型转换后,内存空间里面的内容是不会发生改变的,改变的是运算时的临时数据对象的类型,是你去读取这个内存空间时的解析方法。

1.2K30

【熟视C语言】C语言——带你深度刨析数据在内存中的存储

类型的基本归类: 整型家族: char  unsigned char    //归整型其中一种类型  signed char     //内存大小一个字节 //C语言规定中并未明确指出char的类型是有符号或无符号的...2.整型内存中的存储 这里先看两个例子,在编译器中创建这两个整型并赋值,开始调试并调用内存监视窗口,看看这两个量是如何存储在内存中的。...9,当以float的类型取出,并以%f的形式打印则以浮点的角度看待这块空间,打印出来的值是0.000000,对于同样大小的空间,同样的内容以两个不同的角度看待,得到的是不一样的值 同样,当我们使用float...看完这些相信你一定会很好奇究竟浮点是如何看待和使用内存的内容的。...比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点例,留给M只有23位,第一位的1舍去以后,等于可以保存24位有效数字。

15820

【进阶】C语言——深度剖析数据在内存中的存储

空间的大小是根据不同的类型决定的。 那接下来我们谈谈数据在所开辟内存中到底是如何存储的? 比如: int a = 20; int b = -10; 我们知道 a 分配四个字节的空间。...2.2大小端介绍 大端(字节序)模式,是指数据的低位保存在内存的高地址中,数据的高位,保存在内存的低地址中; 小端(字节序)模式,是指数据的低位保存在内存的低地址中,数据的高位,,保存在内存的高地址中...例如:一个 16bit 的 short x ,在内存中的地址 0x0010 , x 的值 0x1122 ,那么 0x11 高字节,0x22 低字节。...3.浮点内存中的存储 浮点数家族包括: float、double、long double 类型 浮点数表示的范围:float.h中定义 3.1例子 3.2浮点数存储规则 num 和 *pFloat...比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点例,留给M只有23位,第一位的1舍去以后,等于可以保存24位有效数字。

59720

C语言整型浮点数在内存中的存储

,那么必然存在着一个如何多个字节安排的问题。...大小端存储模式 大端(存储)模式,是指数据的低位保存在内存的高地址中,数据的高位,保存在内存的低地址 中; 小端(存储)模式,是指数据的低位保存在内存的低地址中,数据的高位,,保存在内存的高地 址中...注:对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位有效数字M。 对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位有效数字M。...以32位 浮点例,留给M只有23位, 第一位的1舍去以后,等于可以保存24位有效数字。...三.总结 以上就是今天的内容,本文仅仅简单介绍了整型浮点数在内存中的存储问题。 这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位点赞评论收藏⭐,谢谢!!!

16720

数据在内存中的存储

---- 数据在内存中的存储:: 整型及其浮点存储方式: 1.数据类型介绍 内置类型: char 字符 short 短整型 int 整型 long 长整型 long long 更长的整型 C99标准中引入...float 单精度浮点 double 双精度浮点 类型的意义: 1.决定了使用这个类型开辟内存空间的大小(大小决定了使用范围) 2.决定了如何看待内存空间的视角 类型的基本归类: 整型家族:  ...构造类型: 数组类型 结构体类型 struct 枚举类型 enum 联合类型 union 指针类型: 整型指针:int * pi 字符指针 :char * pc 浮点指针 : float * pf...300 44 4.浮点内存中的存储 常见的浮点数:3.14159、1E10 == 1.0 * 10^10....,以32位浮点例,留给M只有23位,第一位的1舍去以后,等于可以保存24位有效数字。

99530

C语言进阶——数据在内存中的存储

现在我们可以进入更深层次的C语言世界了,本文是我们进阶的首篇文章,主要是介绍各种数据在内存中的存储情况,比如有符号char的最大值是多少、整型数据与浮点数据在内存的存储方式有何不同等,学会这些知识能增加我们的内功...整型数据在内存中的存储  整型数据有三种状态:原码、反码、补码,原码就是原数据转换为二进制后的序列,序列中的最高位符号位(0正数,1负数),反码则是原码除符号位外全部取反(0变为1,1变为0...大端存储:指数据高位次存放在内存的低地址中,低位次则是存放在内存的高地址中  当大端存储时,十六进制会正着显示小端存储:指数据高位次存放在内存的高地址中,低位次则是存放在内存的低地址中当小端存储时...单精度浮点(float)有32比特位,规则在上面,双精度浮点(double)有64位,规则跟32位几乎一致,不过在空间分配和指数E的中间值上略有差异 ️取出  存入很复杂,取出也很复杂,光是取出的情况就有三种...例题  模拟将整型存入浮点浮点存入整型的场景 //模拟 int main() { int a = 9; float* pa = &a; printf("%d\n", a); printf

15120

0x15Java引用赋值,是原子操作吗? 线程安全吗?

Q2非原子的64位操作 这是一个局部的概念,大多地方我们遇不到这样的说法 当线程在没有同步的情况下读取变量时,可能会得到一个失效值,但至少这个值是由之前某个线程设置的值,不是一个随机值。...Java内存模型要求,变量的读取操作和写入操作都必须是原子操作,但对于非volatile类型的long和double变量,JVM允许64位的读操作或写操作分解两个32位的操作。...0 long:长整型,在内存中占64位,即8个字节-263~263-1,默认值0L float:浮点,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有...6~7位),默认值0 double:双精度浮点,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0 char:字符,用于存储单个字符,占16位,即2个字节,取值范围0~65535,默认值空...基于CAS的线程安全机制很好很高效,但要说的是,并非所有线程安全都可以用这样的方法来实现,这只适合一些粒度比较小,如计数器这样的需求用起来才有效 欢迎访问我的小站:学

3.4K20

C语言进阶(七) - 数据的储存

前言 本节深入解释整型数据与浮点数据在内存中的存储方式,旨在进一步理解底层的数据存储。 1....单精度浮点 4byte double 双精度浮点 8byte long double 多精度浮点(长精度浮点) 关于类型字节数的大小: 具体的长度(大小)标准并没有规定,只是规定了以下:...int* 整型指针 float* 单精度浮点指针 double* 双精度浮点指针 void* 无类型指针(空类型) 1.6 构造类型 1.6.1 数组类型 数组也是一种类型。...整型内存中的存储 创建一个整型类的变量时,首先在内存其开辟相应的空间,接着就是如何存储这个变量的值。...浮点数据在内存中的储存 浮点的意思是数据在内存中的储存是浮动的,也就是不准确的,所以不叫做实数数据。

2K30

NVH原始数据文件如何读取 Part1

在此过程中,会遇到原始测试数据格式转换的问题,近几篇文章简要介绍如何直接读取这一类的原始数据文件。” 00 — 前言 2020年开篇,先祝大家健康平安!...3. 16位带符号位的整型。 4. 32位单精度浮点。 01 — 位,字节 如果我们一位一位(bit)地读取数据的话,显示如图2。 8位是1个字节(8 bits = 1 Byte)。...图4 04 — 32位单精度浮点 另外,还有一种数据类型:浮点。 拿32位单精度浮点来举例,数据从低位到高位读取。计算方法如图5。 还有64位,双精度等浮点,算法不作详述。 ?...图5 05 — 总结 一个数据文件内,往往包含:ASCII明文、整型数据、浮点数据等。 ASCII明文:介绍了一些基本的测试信息。如:通道数、采样频率、对整型/浮点的修正系数等。...浮点数据:有些数采可能采用浮点记录数据,浮点数据是有小数点的数据,有些也需要乘以固定的修正系数。 了解了以上的数据类型,即具备了编程读取数据文件的一些知识准备。

2.8K50
领券