上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中的布尔型是整型的一种,但不能将整型当布尔型使用,因为它们在设计机制和使用约束上有着许多差异,这是与其他语言不同的地方。