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

浮点数和整数的Erlang二进制表示,差异?

浮点数和整数的Erlang二进制表示,差异主要在于表示方式和数据结构上。

Erlang是一种函数式编程语言,它使用了一种称为“术语”的数据结构来表示数字。在Erlang中,整数和浮点数都是以二进制形式存储的。

对于整数,Erlang使用一种称为“小数”的表示方式。小数是一个有符号的整数,它由一个符号位和一个无符号整数组成。在Erlang中,整数的二进制表示是不带符号的,因此小数的二进制表示也是不带符号的。

对于浮点数,Erlang使用一种称为“浮点数”的表示方式。浮点数由一个符号位、一个指数部分和一个尾数部分组成。在Erlang中,浮点数的二进制表示是带符号的,因此浮点数的二进制表示是带符号的。

总的来说,浮点数和整数的Erlang二进制表示,差异主要在于表示方式和数据结构上。整数使用小数表示,而浮点数使用浮点数表示。这种表示方式的不同,导致了二进制表示的不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

IEEE 二进制浮点数表示

今天,我来将 IEEE 二进制浮点数表示方式进行一个简单介绍。 浮点数 在 C 语言中,有两种存储浮点数方式,分别是 float double ,当然了还有long double。...而浮点数在内存中并没有使用补码进行表示浮点数在内存中存储方式使用了 IEEE 编码表示方式,即使用 符号、指数 尾数 形式进行存储。...IEEE浮点数表示 用 IEEE 编码表示浮点数,需要 3 部分进行表示,分别是 符号、指数 尾数。符号位占用 1 位,0 表示正数,1 表示负数。...指数 尾数 根据 float double 类型不同而长度不同。...IEEE 二进制浮点数表示: 位数  符号位  指数位  尾数位 32   1 8 23     单精度(float) 64   1 11

90220

浮点数二进制表示

num值为:1091567616   *pFloat值为:9.000000 我很惊讶,num*pFloat在内存中明明是同一个数,为什么浮点数整数解读结果会差别这么大?...要理解这个结果,一定要搞懂浮点数在计算机内部表示方法。我读了一些资料,下面就是我笔记。 2.在讨论浮点数之前,先看一下整数在计算机内部是怎样表示。  ...int num=9; 上面这条命令,声明了一个整数变量,类型为int,值为9(二进制写法为1001)。...那么,我们问题就简化成:为什么0x00000009还原成浮点数,就成了0.000000? 3.根据国际标准IEEE 754,任意一个二进制浮点数V可以表示成下面的形式: ?...7.再看例题第二部分。 请问浮点数9.0,如何用二进制表示?还原成十进制又是多少? 首先,浮点数9.0等于二进制1001.0,即1.001×2^3。

79510
  • 浮点数加法引发问题:浮点数二进制表示

    具体说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)整数次幂得到,这种表示方法类似于基数为10科学记数法。...10按位顺序组合起来,就得到了一个比较精确二进制表示纯小数了,同时精度问题也就由此产生,许多数都是无法在有限n内完全精确表示出来,我们只能利用更大n值来更精确表示这个数,这就是为什么在许多领域...0.125,也就是 1/8,二进制,是 0.001,可以在 10 进制 2 进制中轻松表达。...由于计算机中使用浮点数是基于有限精度二进制数,因此,不可能绝对准确。这一现象往往在打印浮点数时才被注意到。 浮点数二进制表示,一般采用 IEEE 754 标准。...在一般计算中,处理二进制浮点数需要用到很多技巧技术。

    1.8K90

    浮点数二进制表示(IEEE 754标准)

    根据这个标准,我们来尝试把一个十进制浮点数转换为IEEE754标准表示。...例如:178.125 先把浮点数分别把整数部分小数部分转换成2进制 整数部分用除2取余方法,求得:10110010 小数部分用乘2取整方法,求得:001 合起来即是:10110010.001...转换成二进制浮点数,即把小数点移动到整数位只有1,即为:1.0110010001 * 2^111,111是二进制,由于左移了7位,所以是111 把浮点数转换二进制后,这里基本已经可以得出对应3部分值了...(负数为1) 阶码 : 阶码计算公式:阶数 + 偏移量, 阶码是需要作移码运算,在转换出来二进制数里,阶数是111(十进制为7),对于单精度浮点数,偏移值为01111111(127)[偏移量计算是...由于尾数部分是规格化表示,最高位总是“1”,所以这是直接隐藏掉,同时也节省了1个位出来存储小数,提高精度。 如果文章对您有帮助或者启发,请您帮我一个小忙: 一键三连喔!

    88220

    CC++中整数浮点数在内存中表示方式

    下面来说明它们在内存中具体表现形式:   整型:   整型变量占4字节,在计算机中都是用二进制表示,整型有无符号有符号两种形式。   ...浮点数:   早期小数表示采用固定小数点方式,比如规定在32位二级制数字当中,哪几位表示整数部分,其余表示小数部分,这样表示数据范围有限,后来采用是小数点浮动变化表示方式,也就是所谓浮点数...浮点数采用是IEEE表示方式,最高位表示符号位,在剩余31位中,从左往右8位表示是科学计数法指数部分,其余表示整数部分。...因为有的浮点数没有办法完全化为二进制数,会产生一个无限值,编译器会舍弃一部分内容,也就说只能表示一个近似的数,所以在比较浮点数是否为0时候不要用==而应该用近似表示,允许一定误差,比如下面的代码:...double用11位表示指数部分,其余表示尾数部分。   浮点数计算在CPU中有专门浮点数寄存器,对应计算指令,在效率上比整型数据低。

    91230

    整数浮点数在内存中存储

    1.整数在内存中存储 整数二进制表示方法有三种,即原码、反码、补码。 三种表示方法均有符号位和数值位两部分,数值位最高位被当作符号位,其中0表示“正”,1表示“负”,剩余位则为数值位。...原因是: 1.在计算机系统中,数值⼀律⽤补码来表示存储。...3.1浮点数存储 根据国际标准IEEE(电⽓电⼦⼯程协会) 754,任意⼀个⼆进制浮点数V可以表示成下面的形式: • (−1)S 表示符号位,当S=0,V为正数;当S=1,V为负数 • M 表示有效数字...至于浮点数9.0,为什么整数打印是 1091567616? 首先,浮点数9.0等于二进制1001.0,换算成科学计数法是:1.001×2^3。...3.3 验证浮点数存储方式 以5.5为例,它二进制表示为101.1,即1.011*2^2,则S=0,M=1.011,E=2+127=129, 最后写成二进制形式就是 0 10000001 01100000000000000000000

    16910

    计算整数二进制表示中各个1位数目

    编写一个函数,确定给定整数二进制表示中各个1位数目。 举例:给定一个数字是7,假设是8位操作系统,二进制表示为00000111,其中有3个1,则调用函数返回3。...整体思路:循环统计,检测二进制表示最后一位,如果最后一位是1时候计数器加1,然后把数字右移一位,直到整个数字全部移完。...利用这个结论我们还可以最很多事,比如有题目: 给你一个正整数 n,请你判断该正整数是否是 2 幂次方。如果是,返回 true ;否则,返回 false。...比如,n=4时候就返回ture,如果n=3时候就返回false。 整体思路:由于一个正整数是2幂次方,那么它二进制一定是1后面好多0这种格式,比如4二进制就是100,8二进制就是1000。...所以按照这个思路我们可以去掉最后一个1,如果结果是0时候就说明这个正整数是2幂次方。

    9910

    整数二进制表示中有多少个1问题

    我在剑指offer上面看到这道题,看到这道题是用c++写,但是我用java编写时候遇到问题。 首先描述问题:         一个整数(可以为整数也可以为负数),它二进制表示中有多少个1,。...,这些问题在后面说,先解释我算法,当然也是在处理符号后,因为按照剑指offer的话对于10-10,还是会得出230结果,在符号处理之后,那么试想,一个数减去1后,是不是就会把最右端1变成0,那么...n&n-1就会连同最后一位1之后数据位都清零,所以说,减一次就能得出一个1,也就数有多少1,就操作几次,所以这种算法效率最高,下面是我java代码: /** * 这种算法是每次减去1就会使原来数字最左方...,不知道大家遇到类似问题没,运用第三种解法还可以解决好多衍伸问题,例如判断一个数是不是2幂,因为如果是2幂的话,那么就只有一个1,所以只需操作一次如果为0那么就是2幂次方,再如,判断两个整数有多少位是不同...,涉及到不同那么我们必然会想到亦或,不同位亦或后肯定为1,所以又转换成求整数1个数问题,所以第三种解法应该是比较优秀

    28710

    【C语言】整数浮点数在内存中存储

    一、 整数在内存中存储 详情请见拙文 【C语言】中位操作符移位操作符,原码反码补码以及进制之间转换 其中详细介绍了整数在内存中存储是依靠原反补码存储实现 二、大小端字节序字节序判断 首先声明我使用编译器是...我们一步一步来验证一下: char类型128二进制为00000000 00000000 00000000 10000000,存入a数据为100000000,当过程进行到这里我们发现了a数据是相同...第二项是a[1]地址转化成整形然后加1 四、 浮点数在内存中存储 根据国际标准IEEE,任意⼀个⼆进制浮点数V可以表示成: 对于32位浮点数,即float,最高1位存储符号位S,接着...比如,2^10E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001 当E全为0时,浮点数指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第一位...这样做是为了表示±0,以及接近于0很小数字 当E全为1时,这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s) 今天分享就到这了~ 感谢观看 ~

    8610

    Erlang 03 - Erlang缺陷

    数据类型 内存占用量 小整数 1个字 大整数 至少3个字(可按需增长) 浮点数 在32位架构下占4个字, 在64位架构下占3个字 原子 1个字(原子名称字符串仅存在Erlang节点原子表中) 二进制串或位串...二者之间唯一可感知区别就是大整数运算会比小整数运算要来慢. 在带有密集数值运算大紧凑循环中, 如果给定输入会导致大量大数运算, 就会产生较为明显性能差异....浮点数及其装箱形式 Erlang采用是64位精度浮点数, 一个字长容纳不下(即使在64位机器上也放不下, 整数情景一样, BEAM会讲一些位用作类型标签)....因此, 浮点数必须表示成装箱形式: 在这种形式下, 浮点数实际数据保存在进程堆空间内, 指向该位置指针连同类型标签一并挤入一个字....他们跟浮点数大数一样, 保存在进程自身堆中. 其他Erlang数据类型一样, 在进程间传递消息时, 这类二进制数据会被一并复制.

    1.7K30

    整数浮点数在内存中存储(大小端字节序,浮点数存取)

    1.整数在内存中存储 整数二进制表示方法有三种,即原码、反码、补码。...原因是: 1.在计算机系统中,数值⼀律⽤补码来表示存储。...3.1浮点数存储 根据国际标准IEEE(电⽓电⼦⼯程协会) 754,任意⼀个⼆进制浮点数V可以表示成下面的形式: • (−1)S 表示符号位,当S=0,V为正数;当S=1,V为负数 • M 表示有效数字...至于浮点数9.0,为什么整数打印是 1091567616? 首先,浮点数9.0等于二进制1001.0,换算成科学计数法是:1.001×2^3。...3.3 验证浮点数存储方式 以5.5为例,它二进制表示为101.1,即1.011*2^2,则S=0,M=1.011,E=2+127=129, 最后写成二进制形式就是 0 10000001 01100000000000000000000

    26910

    整数浮点数在内存中存储​(大小端详解)

    一、整数在内存中存储 在讲解操作符时候,我们就讲过了下面的内容: 整数2进制表示方法有三种,即 原码、反码补码​ 三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负...正整数原、反、补码都相同。 负整数三种表示方法各不相同。如图: 原码:直接将数值按照正负数形式翻译成二进制得到就是原码。...在大多数系统上,整数 9 浮点数 9.0 在内存中表示是不同。 接下来,你通过 pFloat 将该内存位置值设置为 9.0。...这意味着你现在改变了原来存储整数 9 内存,使其现在包含一个浮点数表示。 再次尝试打印整数 n 值时,它会尝试将内存中浮点数表示解释为一个整数。...比如:0.5 二进制形式为0.1,由于规定正数部分必须为1,即将小数点右移1位,则为1.0*2^(-1),其 阶码为-1+127(中间值)=126,表示为01111110,而尾数1.0去掉整数部分为

    75110

    【编程基础】c语言中获取整数浮点数符号位

    为什么要获得符号位 很多时候,我们需要判断数值正负,来做相应逻辑处理。条件判断语句可以很好完成这个需求。...而数值符号位已经被存储在了数值最高位,可以利用这点来避免条件判断。 2. 如何得到符号位 可能有很多种方法。但是通过移位来获得符号位是最直接想到。...移位有左移右移, 右移因为有符号位问题。所以,有2个情况,有符号右移无符号右移。有符号右移空位补符号位,无符号右移空位补0。...一种实现方法 因为浮点数无法移位,所以要么强转成整数处理,要么就要拆成数组处理。这里我们使用当做数组处理。...((signed char*) &x)[sizeof(x) - 1] >> 7 右移7位表示把符号移动到右边第一位,那么,正数就是0,负数就是-1 最后,完整宏定义 /** * Get x sign

    2.1K80

    计算机程序思维逻辑 (4) - 整数二进制表示与位运算

    上节我们提到正整数相乘结果居然出现了负数,要理解这个行为,我们需要看下整数在计算机内部二进制表示。 十进制 要理解整数二进制,我们先来看下熟悉十进制。...正整数二进制表示整数二进制表示与此类似, 只是在十进制中,每个位置可以有10个数字,从0到9,但在二进制中,每个位置只能是0或1。...就是这样,看上去可能比较奇怪难以理解,但这种表示其实是非常严谨正确,是不是很奇妙? 理解了二进制加减法,我们就能理解为什么正数运算结果可能出现负数了。...查看整数二进制十六进制表示 在Java中,可以方便使用IntegerLong方法查看整数二进制十六进制表示,例如: int a = 25; System.out.println(Integer.toBinaryString...我们同样讨论了整数位运算,需要注意就是无符号右移有符号右移区别。 理解了整数,那小数呢?

    1K90
    领券