Int
abstract struct Int
Overview
Int is the base type of all integer types.
There are four signed integer types: Int8
, Int16
, Int32
and Int64
, being able to represent numbers of 8, 16, 32 and 64 bits respectively. There are four unsigned integer types: UInt8
, UInt16
, UInt32
and UInt64
.
An integer literal is an optional #+
or #-
sign, followed by a sequence of digits and underscores, optionally followed by a suffix. If no suffix is present, the literal's type is the lowest between Int32
, Int64
and UInt64
in which the number fits:
1 # Int32 1_i8 # Int8 1_i16 # Int16 1_i32 # Int32 1_i64 # Int64 1_u8 # UInt8 1_u16 # UInt16 1_u32 # UInt32 1_u64 # UInt64 +10 # Int32 -20 # Int32 2147483648 # Int64 9223372036854775808 # UInt64
The underscore _
before the suffix is optional.
Underscores can be used to make some numbers more readable:
1_000_000 # better than 1000000
Binary numbers start with 0b
:
0b1101 # == 13
Octal numbers start with 0o
:
0o123 # == 83
Hexadecimal numbers start with 0x
:
0xFE012D # == 16646445 0xfe012d # == 16646445
Included Modules
Direct Known Subclasses
Defined in:
int.crtime/span.cr
time/span.cr
big/big_int.cr
big/big_rational.cr
json/to_json.cr
Class Method Summary
- .from_io(io : IO, format : IO::ByteFormat)
Reads an integer from the given io in the given format.
Instance Method Summary
- #%(other : Int)
Returns
self
modulo other. - #%(other : BigInt) : BigInt
- #*(other : BigRational)
- #*(other : BigInt) : BigInt
- #**(exponent : Float) : Float64
Returns the value of raising
self
to the power of exponent. - #**(exponent : Int) : self
Returns the value of raising
self
to the power of exponent. - #+(other : BigRational)
- #+(other : BigInt) : BigInt
- #-(other : BigRational)
- #-(other : BigInt) : BigInt
- #/(other : BigRational)
- #/(other : Int)
Divides
self
by other using floored division. - #/(other : BigInt) : BigInt
- #<<(count : Int)
Returns the result of shifting this number's bits count positions to the left.
- #<=>(other : BigInt)
- #<=>(other : BigRational)
- #===(char : Char)
- #>>(count : Int)
Returns the result of shifting this number's bits count positions to the right.
- #abs
- #bit(bit)
Returns this number's bitth bit, starting with the least-significant.
- #ceil
- #chr
Returns a
Char
that has the unicode codepoint ofself
. - #day
- #days
- #divisible_by?(num)
- #downto(to)
- #downto(to, &block : self -> ) : Nil
- #even?
- #fdiv(other)
- #floor
- #gcd(other : Int)
- #gcm(other : BigInt) : Int
- #hash
- #hour
- #hours
- #lcm(other : Int)
- #lcm(other : BigInt) : BigInt
- #millisecond
- #milliseconds
- #minute
- #minutes
- #modulo(other)
- #month
- #months
- #odd?
- #popcount
Counts
1
-bits in the binary representation of this integer. - #pred
- #remainder(other : Int)
Returns
self
remainder other. - #round
- #second
- #seconds
- #succ
- #tdiv(other : Int)
Divides
self
by other using truncated division. - #times(&block : self -> ) : Nil
- #times
- #to(to)
- #to(to, &block : self -> ) : Nil
- #to_big_i : BigInt
Returns a
BigInt
representing this integer. - #to_big_r
Returns a
BigRational
representing this integer. - #to_io(io : IO, format : IO::ByteFormat)
Writes this integer to the given io in the given format.
- #to_json(json : JSON::Builder)
- #to_s(base : Int, upcase : Bool = false)
- #to_s(io : IO)
- #to_s(base : Int, io : IO, upcase : Bool = false)
- #to_s
- #trunc
- #upto(to)
- #upto(to, &block : self -> ) : Nil
- #week
- #weeks
- #year
- #years
- #~
Instance methods inherited from module Comparable(BigRational)
<, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) >, >=(other : T) >= Instance methods inherited from module Comparable(BigInt)
<, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) >, >=(other : T) >= Instance methods inherited from struct Number
*(other : Complex)*(other : BigFloat) *, +(other : BigFloat)
+(other : Complex)
+ +, -(other : Complex)
-(other : BigFloat) -, /(other : Complex) /, <=>(other : BigFloat)
<=>(other) <=>, ==(other : Complex) ==, abs abs, abs2 abs2, cis cis, clamp(min, max)
clamp(range : Range) clamp, divmod(number) divmod, i i, round(digits, base = 10) round, sign sign, significant(digits, base = 10) significant, step(*, to = nil, by = 1, &block)
step(*, to = nil, by = 1) step, to_big_f to_big_f, to_c to_c, to_yaml(yaml : YAML::Builder) to_yaml
Class methods inherited from struct Number
zero : self zero Instance methods inherited from module Comparable(BigFloat)
<, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) >, >=(other : T) >= Instance methods inherited from module Comparable(Number)
<, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) >, >=(other : T) >= Instance methods inherited from struct Value
==(other) ==, dup dup Instance methods inherited from class Object
!=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, class class, dup dup, hash hash, inspect(io : IO)
inspect inspect, itself itself, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, tap(&block) tap, to_json(io : IO)
to_json to_json, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ") to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&block) try
Class methods inherited from class Object
from_json(string_or_io, root : String) : selffrom_json(string_or_io) : self from_json, from_yaml(string_or_io) : self from_yaml
Class Method Detail
def self.from_io(io : IO, format : IO::ByteFormat)Source
Reads an integer from the given io in the given format.
See also: IO#read_bytes
.
Instance Method Detail
def *(other : BigRational)Source
def **(exponent : Float) : Float64Source
Returns the value of raising self
to the power of exponent.
2 ** 3.0 # => 8.0 2 ** 0.0 # => 1.0 2 ** -1.0 # => 0.5
def **(exponent : Int) : selfSource
Returns the value of raising self
to the power of exponent.
Raises ArgumentError
if exponent is negative: if this is needed, either use a float base or a float exponent.
2 ** 3 # => 8 2 ** 0 # => 1 2 ** -1 # ArgumentError
def +(other : BigRational)Source
def -(other : BigRational)Source
def /(other : BigRational)Source
def /(other : Int)Source
Divides self
by other using floored division.
In floored division, given two integers x and y:
- q = x / y is rounded toward negative infinity
- r = x % y has the sign of the second argument
- x == q*y + r
For example:
x y x / y x % y 5 3 1 2 -5 3 -2 1 5 -3 -2 -1 -5 -3 1 -2
Raises if other is zero, or if other is -1 and self
is signed and is the minimum value for that integer type.
def <<(count : Int)Source
Returns the result of shifting this number's bits count positions to the left.
- If count is greater than the number of bits of this integer, returns 0
- If count is negative, a right shift is performed
8000 << 1 # => 16000 8000 << 2 # => 32000 8000 << 32 # => 0 8000 << -1 # => 4000
def <=>(other : BigRational)Source
def >>(count : Int)Source
Returns the result of shifting this number's bits count positions to the right. Also known as arithmetic right shift.
- If count is greater than the number of bits of this integer, returns 0
- If count is negative, a left shift is performed
8000 >> 1 # => 4000 8000 >> 2 # => 2000 8000 >> 32 # => 0 8000 >> -1 # => 16000 -8000 >> 1 # => -4000
def absSource
def bit(bit)Source
Returns this number's bitth bit, starting with the least-significant.
11.bit(0) # => 1 11.bit(1) # => 1 11.bit(2) # => 0 11.bit(3) # => 1 11.bit(4) # => 0
def ceilSource
def chrSource
Returns a Char
that has the unicode codepoint of self
.
Raises ArgumentError
if this integer's value doesn't fit a char's range (0..0x10ffff
).
97.chr # => 'a'
def daySource
def daysSource
def divisible_by?(num)Source
def downto(to)Source
def even?Source
def fdiv(other)Source
def floorSource
def hashSource
def hourSource
def hoursSource
def millisecondSource
def millisecondsSource
def minuteSource
def minutesSource
def modulo(other)Source
def monthSource
def monthsSource
def odd?Source
abstract def popcountSource
Counts 1
-bits in the binary representation of this integer.
5.popcount # => 2 -15.popcount # => 29
def predSource
def remainder(other : Int)Source
Returns self
remainder other.
This uses truncated division.
See Int#div
for more details.
def roundSource
def secondSource
def secondsSource
def succSource
def tdiv(other : Int)Source
Divides self
by other using truncated division.
In truncated division, given two integers x and y:
-
q = x.tdiv(y)
is rounded toward zero -
r = x.remainder(y)
has the sign of the first argument x == q*y + r
For example:
x y x / y x % y 5 3 1 2 -5 3 -1 -2 5 -3 -1 2 -5 -3 1 -2
Raises if other is 0
, or if other is -1
and self
is signed and is the minimum value for that integer type.
def timesSource
def to(to)Source
def to_big_rSource
Returns a BigRational
representing this integer.
def to_io(io : IO, format : IO::ByteFormat)Source
Writes this integer to the given io in the given format.
See also: IO#write_bytes
.
def to_json(json : JSON::Builder)Source
def to_sSource
def truncSource
def upto(to)Source
def weekSource
def weeksSource
def yearSource
def yearsSource
def ~Source
© 2012–2017 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.22.0/Int.html