整型数与浮点数在内存中的表示

落下的基础还是要早点补起来的。。。

整型数在内存中存储

正整数

以int a = 25为例

1.      将a用2进制表示

(25)10 = (11001)2

因为int型在内存中占4个字节,也就是32位,实际是

(0000 0000 0000 0000 0000 0000 0001 1001)

2.      用16位表示

(0 0 0 0 0 0 19) à(00 00 00 19) 在内存中低地址在高位,也就是

19 00 00 00

负整数

以int b = -25为例

1.    将b用2进制表示

(1000 0000 0000 0000 0000 0000 0001 1001)

2.    取反

0111 1111 11111111 1111 1111 1110 0110

+1

0111 1111 11111111 1111 1111 1110 0111

7 F F F F F E 7 à 7F FF FF E7

在内存中表示为

E7 FF FF 7F

浮点数在内存中存储

正浮点数

以float c = 8.25f

1.      将c用2进制表示

1000.01

1000.01 = 1.00001*2^3(尾数00001,指数3)

第0位     表示符号位(0正数,1负数)

第1-22位  表示尾数部分

第23-31位 表示指数部分(共9位) 127+指数

所以表示为

0 1000 0010 00001 后面补0,共32位

0100 0001 00000100 0000 0000 0000 0000

4 1 0 4 0 0 0 0 à 41 04 00 00

内存中

00 00 04 41

负浮点数

以float d = -8.25f

1.      将d用2进制表示

-1000.01

先计算除符号以外的

1000.01 =1.00001*2^3

因为是负数,所以首位是1

1 1000 0010 00001

1100 0001 00000100 0000 0000 0000 0000

C 1 0 4 0 0 0 0 à C1 04 00 00

内存中

00 00 04 C1

2016-03-16 23:16:16 于北京 海淀

时间: 2024-12-20 01:24:30

整型数与浮点数在内存中的表示的相关文章

移码及浮点数在内存中的存储方式

首先说一下十进制的小数怎么转化为二进制的小数,计算机根本就不认识10进制的数据,他只认识0和1,所以,10进制的小数在计算机中是用二进制的小数表示的. 十进制的小数转化为二进制的小数的方法: 可以简单的概括为正序取整,将十进制的小数部分乘以2,然后取整数部分. 例如将0.2转化为二进制的小数,那么0.2*2=0.4,其整数部分是0,所以二进制小数的第一位为0,然后0.4*2=0.8,其整数部分是0,所以二进制小数的第二位为0,然后0.8*2=1.6,其整数部分是1,所以二进制小数的第三位是1,然

浮点数在内存中的表示

        1. 浮点数的二进制格式. 浮点数的二进制格式如下, 分为 3 个部分, 即 sign (符号位), exponent (指数位), 以及 significand (有效数位). 如下图所示: single-precision floating point(单精度浮点数), 4 字节, 共 32 位: 31            23   22                               0         +---------------------------

浮点数在内存中的存储(简述)

数据类型: 1.基本类型(整形,浮点型,字符型) 2.构造类型(数组,结构体,联合,枚举) 3.指针类型 查看数据范围:整形范围(limits.h) 浮点型类型(flaot.h) eg:有符号的char的表示范围:0000 0000~1111 1111(-128~127)其中最高位表示符号位,0为正 1为负 其实数据的存储和访问就下像作图这个圈一样,当你给它的127+1它就会变成128 整形变量: 一般来说字长为32的情况下,整形表示32位,短整形16位,长整形32位 数据在计算机中以补码的形式

求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。方法是先将整型数字转换到数组中,再判断。函数为 int same(int num)其中num是输入的整型数字

import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Test { public static void main(String[] args) { /** * 2.求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123, * 相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0. * 方法是先将整型数字转换到数组中,再判断.

C/C++中整数与浮点数在内存中的表示方式

在C/C++中数字类型主要有整数与浮点数两种类型,在32位机器中整型占4字节,浮点数分为float,double两种类型,其中float占4字节,而double占8字节.下面来说明它们在内存中的具体表现形式: 整型: 整型变量占4字节,在计算机中都是用二进制表示,整型有无符号和有符号两种形式. 无符号变量在定义时只需要在相应类型名前加上unsigned 无符号整型变量用32位的二进制数字表示,在与十进制进行转化时只需要知道计算规则即可轻松转化.需要注意的是在计算机中一般使用主机字节序,即采用“高

C/C++浮点数在内存中的存储方式

任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100.则在Intel CPU架构的系统中,存放方式为  10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式.但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二进制科学表示法. 在二进制科学表示法中,S=M*2^N 主要由三部分构成:符号位+阶码(N)+尾数(M).对于fl

浮点数在内存中的存放方式

C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53. 无论是单精度还是双精度在存储中都分为三个部分: 符号位(Sign)

C语言中浮点数在内存中的存储方式

关于多字节数据类型在内存中的存储问题 //////////////////////////////////////////////////////////////// int ,short 各自是4.2字节.他们在内存中的存储方式以下举个样例说明. int data = 0xf4f3f2f1; 当中低位存放在编址小的内存单元.高位存放在编址高的内存单元 例如以下: 地址:0x8000      0x8001    0x8002   0x8003 数据:   f1              f2 

[算法]浮点数在内存中的存储方式

float型变量占用32bit,即4个byte的内存空间 我们先来看下浮点数二进制表达的三个组成部分. 三个主要成分是: Sign(1bit):表示浮点数是正数还是负数.0表示正数,1表示负数 Exponent(8bits):指数部分.类似于科学技术法中的M*10^N中的N,只不过这里是以2为底数而不是10.需要注意的是,这部分中是以2^7-1即127,也即01111111代表2^0,转换时需要根据127作偏移调整. Mantissa(23bits):基数部分.浮点数具体数值的实际表示. 下面我