龙空技术网

我爱Julia之入门-005

tvrtadx 162

前言:

此时咱们对“模2算术”大致比较重视,你们都需要分析一些“模2算术”的相关文章。那么小编也在网络上网罗了一些对于“模2算术””的相关资讯,希望咱们能喜欢,姐妹们快快来学习一下吧!

整数和浮点数

整数和浮点值是算术和计算的基础。这些数值的内置表示被称作原始数值类型(numeric primitive),且整数和浮点数在代码中作为立即数时称作数值字面量(numeric literal)。例如,1 是个整型字面量,1.0 是个浮点型字面量,它们在内存中作为对象的二进制表示就是原始数值类型。

Julia 提供了很丰富的原始数值类型,并基于它们定义了一整套算术操作,还提供按位运算符以及一些标准数学函数。这些函数能够直接映射到现代计算机原生支持的数值类型及运算上,因此 Julia 可以充分地利用运算资源。此外,Julia 还为任意精度算术提供了软件支持,对于无法使用原生硬件表示的数值类型,Julia 也能够高效地处理其数值运算。当然,这需要相对的牺牲一些性能。

以下是 Julia 的原始数值类型:

整数类型:

从上图中可以看出Bool类型中false的值为0,true的值为1。这一点在进行Bool类型与其他类型运算时,就显得十分重要。

浮点类型:

julia虽然支持半精度浮点数,但它们是使用 Float32 进行模拟实现的。

此外,对复数和分数的完整支持是在这些原始数据类型之上建立起来的。多亏了 Julia 有一个很灵活的、用户可扩展的类型提升系统,所有的数值类型都无需显式转换就可以很自然地相互进行运算。

另外,像其他编程语言(java)一样,下划线 _ 可用作数字分隔符:

任意精度算术

为了允许使用任意精度的整数与浮点数,Julia 分别包装了 GNU Multiple Precision Arithmetic Library (GMP)以及 GNU MPFR Library。Julia 中的 BigInt 与 BigFloat 两种类型分别提供了任意精度的整数和浮点数。

存在从原始数字类型创建它们的构造器,也可以使用 parse 从 AbstractString 来构造它们。一旦被创建,它们就可以像所有其它数值类型一样参与算术(也是多亏了 Julia 的类型提升和转换机制)。

然而,需要注意的是,julia作为一门极其注重运行效率的语言,与python不同,原始类型与 BigInt/BigFloat 之间的类型提升并不是自动的,需要明确地指定:

从上图也可以看出Julia 的整数算术实际上是模算数的一种形式,它反映了现代计算机实现底层算术的特点。因此,在可能有溢出产生的程序中,对最值边界出现循环进行显式检查是必要的。

数值字面量系数

为了让常见的数值公式和表达式更清楚,Julia 允许变量直接跟在一个数值字面量后,暗指乘法。这可以让写多项式变得很清楚:

如上图所示,这也让我们在写指数的时候显得更加优雅。数值字面量系数的优先级跟一元运算符相同,比如说取相反数。所以 2^3x 会被解析成 2^(3x),而 2x^3 会被解析成 2*(x^3)。

标签: #模2算术