整數 2020/6/11
================================================================================
1.1.整數類型:Int8,Int16,Int32,Int64,Int128,UInt8,UInt16,UInt32,UInt64,UInt128
1.2.整數構造:
a=1;1,Int64(1),UInt64(a) #常量變量構造:(1, 1, 0x0000000000000001)
0b10,0o10,0x1 # 2,8,16進制構造:(0x02, 0x08, 0x01)
typeof(1) # 默認類型32/64-bit system: Int32/Int64
typeof(3000000000) # 大整數文本32-bit or 64-bit system:Int64
typemin(Int32), typemax(Int32)# 基礎類型最值 (-2147483648,2147483647)
Sys.WORD_SIZE # 內部變量指示系統是32/64位 #64-bit system:64
Int,UInt # 32/64-bit system:Int32(UInt32)/Int64(UInt64)
================================================================================
2.數學運算:
1). 算數運算是一種同餘算術;要檢查溢出或用BigInt類型;Julia使用本機整數運算便於優化
2). 整數+,-,*,指數運算自動類型提升到Int或UInt類型(/、求餘、位運算則類型不提升)
3). 支持四則運算及和分數,float,複數運算
2.1.四則運算:
x = typemax(Int64) # 9223372036854775807
x + 1 # -9223372036854775808 溢出
0b1011 & 0b1101 #0x09
bitstring(0b1011 & 0b1101 )#"00001001"
0b1011 && 0b1101 #TypeError
true&&false #false
整數除法錯誤:
div(typemin(Int),-1) #DivideError
div(2,0) #DivideError
整數除法:div(8,3)==2
整數餘數:rem(8,3))==8%3== 2
任意整數計算:
# 原始類型和BigInt之間類型不自動提升必明確說明
x1=BigInt(typemax(Int64)) + 1
x2=big"1234567890" + 1
x3= parse(BigInt, "1234567890") + 1
x=x1+x2+x3 #9223372039323911590
typeof(x) #BigInt
y1,y2,y=1,2,y1+y2
typeof(y) #Int64
typeof(x+y) #BigInt
=====================================================================================