Julia语言程序设计
上QQ阅读APP看书,第一时间看更新

3.2 布尔型

布尔(Bool)型是专门用于描述真(true)和假(false)这两种逻辑情况的特殊整型。可以通过bitstring()函数查看一下true及false的内存表达方式,代码如下:


julia> bitstring(true)
"00000001"

julia> bitstring(false)
"00000000"

可见,布尔型唯一的两个实例对象true与false在内存结构上其实是8位的值,类似于类型Int8的1与0这两个值:


julia> bitstring(Int8(1))
"00000001"

julia> bitstring(Int8(0))
"00000000"

所以原理上,我们可以将true转为整型1,将false转为整型0,即:


julia> Int8(true)
1

julia> UInt128(true)
0x00000000000000000000000000000001

julia> Int32(false)
0

反之,也可将整型1(未必是Int8)转为true,将整型0转为false,即:


julia> Bool(UInt8(1))
true

julia> Bool(Int64(1))
true

julia> Bool(0)
false

但在整型转为布尔型的过程中,若是非1的数值,转为true时会导致错误,即:


julia> Bool(10)
ERROR: InexactError: Bool(Bool, 10)

julia> Bool(-10)
ERROR: InexactError: Bool(Bool, -10)

这说明,虽然Julia中的布尔型是整型的一种,但不能将整型当布尔型使用,因为它们在设计机制和使用约束上有着许多差异,这是与其他语言不同的地方。