Mojo struct
UInt
@register_passable(trivial)
struct UInt
This type represents an unsigned integer.
The size of this unsigned integer is platform-dependent.
If you wish to use a fixed size unsigned integer, consider using
UInt8
, UInt16
, UInt32
, or UInt64
.
Fieldsβ
- βvalue (
index
): The underlying storage for the integer value. Note that it is the same type as theInt.value
field. MLIR doesn't differentiate between signed and unsigned integers when it comes to storing them with the index dialect. The difference is in the operations that are performed on them, which have signed and unsigned variants.
Implemented traitsβ
Absable
,
AnyType
,
Boolable
,
CeilDivable
,
Copyable
,
Defaultable
,
EqualityComparable
,
ExplicitlyCopyable
,
GreaterThanComparable
,
GreaterThanOrEqualComparable
,
Hashable
,
Indexer
,
Intable
,
LessThanComparable
,
LessThanOrEqualComparable
,
Movable
,
Representable
,
Stringable
,
UnknownDestructibility
,
Writable
Aliasesβ
BITWIDTH
β
alias BITWIDTH = __init__[::Intable](bitwidthof[::DType,__mlir_type.!kgen.target]())
The bit width of the integer type.
MAX
β
alias MAX = UInt((0 if (__init__[::Intable](bitwidthof[::DType,__mlir_type.!kgen.target]()) < 0) else (1 << __init__[::Intable](bitwidthof[::DType,__mlir_type.!kgen.target]())) + -1))
Returns the maximum integer value.
MIN
β
alias MIN = UInt(0)
Returns the minimum value of type.
Methodsβ
__init__
β
__init__() -> Self
Default constructor that produces zero.
@implicit
__init__(value: IntLiteral[value]) -> Self
Construct UInt from the given IntLiteral value.
Args:
- βvalue (
IntLiteral[value]
): The init value.
@implicit
__init__(value: Int) -> Self
Construct UInt from the given Int value.
Args:
- βvalue (
Int
): The init value.
__init__[T: Indexer](value: T) -> Self
Construct UInt from the given Indexable value.
Parameters:
- βT (
Indexer
): The type that that can index into a collection or pointer.
Args:
- βvalue (
T
): The init value.
__bool__
β
__bool__(self) -> Bool
Convert this Int to Bool.
Returns:
False Bool value if the value is equal to 0 and True otherwise.
__pos__
β
__pos__(self) -> Self
Return +self.
Returns:
The +self value.
__invert__
β
__invert__(self) -> Self
Return ~self.
Returns:
The ~self value.
__lt__
β
__lt__(self, rhs: Self) -> Bool
Return whether this UInt is strictly less than another.
Args:
- βrhs (
Self
): The other UInt to compare against.
Returns:
True if this UInt is less than the other UInt and False otherwise.
__le__
β
__le__(self, rhs: Self) -> Bool
Compare this Int to the RHS using LE comparison.
Args:
- βrhs (
Self
): The other UInt to compare against.
Returns:
True if this Int is less-or-equal than the RHS Int and False otherwise.
__eq__
β
__eq__(self, rhs: Self) -> Bool
Compare this UInt to the RHS using EQ comparison.
Args:
- βrhs (
Self
): The other UInt to compare against.
Returns:
True if this UInt is equal to the RHS UInt and False otherwise.
__ne__
β
__ne__(self, rhs: Self) -> Bool
Compare this UInt to the RHS using NE comparison.
Args:
- βrhs (
Self
): The other UInt to compare against.
Returns:
True if this UInt is non-equal to the RHS UInt and False otherwise.
__gt__
β
__gt__(self, rhs: Self) -> Bool
Return whether this UInt is strictly greater than another.
Args:
- βrhs (
Self
): The other UInt to compare against.
Returns:
True if this UInt is greater than the other UInt and False otherwise.
__ge__
β
__ge__(self, rhs: Self) -> Bool
Return whether this UInt is greater than or equal to another.
Args:
- βrhs (
Self
): The other UInt to compare against.
Returns:
True if this UInt is greater than or equal to the other UInt and False otherwise.
__add__
β
__add__(self, rhs: Self) -> Self
Return self + rhs
.
Args:
- βrhs (
Self
): The value to add.
Returns:
self + rhs
value.
__sub__
β
__sub__(self, rhs: Self) -> Self
Return self - rhs
.
Args:
- βrhs (
Self
): The value to subtract.
Returns:
self - rhs
value.
__mul__
β
__mul__(self, rhs: Self) -> Self
Return self * rhs
.
Args:
- βrhs (
Self
): The value to multiply with.
Returns:
self * rhs
value.
__truediv__
β
__truediv__(self, rhs: Self) -> SIMD[float64, 1]
Return the floating point division of self
and rhs
.
Args:
- βrhs (
Self
): The value to divide on.
Returns:
Float64(self)/Float64(rhs)
value.
__floordiv__
β
__floordiv__(self, rhs: Self) -> Self
Return the division of self
and rhs
rounded down to the nearest integer.
Args:
- βrhs (
Self
): The value to divide on.
Returns:
floor(self/rhs)
value.
__mod__
β
__mod__(self, rhs: Self) -> Self
Return the remainder of self divided by rhs.
Args:
- βrhs (
Self
): The value to divide on.
Returns:
The remainder of dividing self by rhs.
__pow__
β
__pow__(self, exp: Self) -> Self
Return the value raised to the power of the given exponent.
Computes the power of an integer using the Russian Peasant Method.
Args:
- βexp (
Self
): The exponent value.
Returns:
The value of self
raised to the power of exp
.
__lshift__
β
__lshift__(self, rhs: Self) -> Self
Return self << rhs
.
Args:
- βrhs (
Self
): The value to shift with.
Returns:
self << rhs
.
__rshift__
β
__rshift__(self, rhs: Self) -> Self
Return self >> rhs
.
Args:
- βrhs (
Self
): The value to shift with.
Returns:
self >> rhs
.
__and__
β
__and__(self, rhs: Self) -> Self
Return self & rhs
.
Args:
- βrhs (
Self
): The RHS value.
Returns:
self & rhs
.
__or__
β
__or__(self, rhs: Self) -> Self
Return self | rhs
.
Args:
- βrhs (
Self
): The RHS value.
Returns:
self | rhs
.
__xor__
β
__xor__(self, rhs: Self) -> Self
Return self ^ rhs
.
Args:
- βrhs (
Self
): The RHS value.
Returns:
self ^ rhs
.
__radd__
β
__radd__(self, value: Self) -> Self
Return value + self
.
Args:
- βvalue (
Self
): The other value.
Returns:
value + self
.
__rsub__
β
__rsub__(self, value: Self) -> Self
Return value - self
.
Args:
- βvalue (
Self
): The other value.
Returns:
value - self
.
__rmul__
β
__rmul__(self, value: Self) -> Self
Return value * self
.
Args:
- βvalue (
Self
): The other value.
Returns:
value * self
.
__rfloordiv__
β
__rfloordiv__(self, value: Self) -> Self
Return value // self
.
Args:
- βvalue (
Self
): The other value.
Returns:
value // self
.
__rmod__
β
__rmod__(self, value: Self) -> Self
Return value % self
.
Args:
- βvalue (
Self
): The other value.
Returns:
value % self
.
__rpow__
β
__rpow__(self, value: Self) -> Self
Return pow(value,self)
.
Args:
- βvalue (
Self
): The other value.
Returns:
pow(value,self)
.
__rlshift__
β
__rlshift__(self, value: Self) -> Self
Return value << self
.
Args:
- βvalue (
Self
): The other value.
Returns:
value << self
.
__rrshift__
β
__rrshift__(self, value: Self) -> Self
Return value >> self
.
Args:
- βvalue (
Self
): The other value.
Returns:
value >> self
.
__rand__
β
__rand__(self, value: Self) -> Self
Return value & self
.
Args:
- βvalue (
Self
): The other value.
Returns:
value & self
.
__ror__
β
__ror__(self, value: Self) -> Self
Return value | self
.
Args:
- βvalue (
Self
): The other value.
Returns:
value | self
.
__rxor__
β
__rxor__(self, value: Self) -> Self
Return value ^ self
.
Args:
- βvalue (
Self
): The other value.
Returns:
value ^ self
.
__iadd__
β
__iadd__(mut self, rhs: Self)
Compute self + rhs
and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__isub__
β
__isub__(mut self, rhs: Self)
Compute self - rhs
and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__imul__
β
__imul__(mut self, rhs: Self)
Compute self*rhs and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__itruediv__
β
__itruediv__(mut self, rhs: Self)
Compute self / rhs
, convert to int, and save the result in self.
Since floor(self / rhs)
is equivalent to self // rhs
, this yields
the same as __ifloordiv__
.
Args:
- βrhs (
Self
): The RHS value.
__ifloordiv__
β
__ifloordiv__(mut self, rhs: Self)
Compute self // rhs
and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__imod__
β
__imod__(mut self, rhs: Self)
Compute self % rhs
and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__ipow__
β
__ipow__(mut self, rhs: Self)
Compute pow(self, rhs)
and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__ilshift__
β
__ilshift__(mut self, rhs: Self)
Compute self << rhs
and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__irshift__
β
__irshift__(mut self, rhs: Self)
Compute self >> rhs
and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__iand__
β
__iand__(mut self, rhs: Self)
Compute self & rhs
and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__ixor__
β
__ixor__(mut self, rhs: Self)
Compute self ^ rhs
and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__ior__
β
__ior__(mut self, rhs: Self)
Compute self|rhs and save the result in self.
Args:
- βrhs (
Self
): The RHS value.
__divmod__
β
__divmod__(self, rhs: Self) -> Tuple[UInt, UInt]
Computes both the quotient and remainder using integer division.
Args:
- βrhs (
Self
): The value to divide on.
Returns:
The quotient and remainder as a Tuple(self // rhs, self % rhs)
.
__index__
β
__index__(self) -> index
Convert to index.
Returns:
The corresponding __mlir_type.index value.
__int__
β
__int__(self) -> Int
Gets the integral value, wrapping to a negative number on overflow.
Returns:
The value as an integer.
__abs__
β
__abs__(self) -> Self
Return the absolute value of the UInt value.
Returns:
The absolute value.
__ceil__
β
__ceil__(self) -> Self
Return the ceiling of the UInt value, which is itself.
Returns:
The UInt value itself.
__floor__
β
__floor__(self) -> Self
Return the floor of the UInt value, which is itself.
Returns:
The UInt value itself.
__round__
β
__round__(self) -> Self
Return the rounded value of the UInt value, which is itself.
Returns:
The UInt value itself.
__round__(self, ndigits: Self) -> Self
Return the rounded value of the UInt value, which is itself.
Args:
- βndigits (
Self
): The number of digits to round to.
Returns:
The UInt value itself if ndigits >= 0 else the rounded value.
__trunc__
β
__trunc__(self) -> Self
Return the truncated UInt value, which is itself.
Returns:
The Int value itself.
__ceildiv__
β
__ceildiv__(self, denominator: Self) -> Self
Return the rounded-up result of dividing self by denominator.
Args:
- βdenominator (
Self
): The denominator.
Returns:
The ceiling of dividing numerator by denominator.
is_power_of_two
β
is_power_of_two(self) -> Bool
Check if the integer is a (non-zero) power of two.
Returns:
True if the integer is a power of two, False otherwise.
write_to
β
write_to[W: Writer](self, mut writer: W)
Formats this integer to the provided Writer.
Parameters:
- βW (
Writer
): A type conforming to the Writable trait.
Args:
- βwriter (
W
): The object to write to.
__str__
β
__str__(self) -> String
Convert this UInt to a string.
A small example.
x = UInt(50)
assert_equal(String(x), "50")
x = UInt(50)
assert_equal(String(x), "50")
Returns:
The string representation of this UInt.
__repr__
β
__repr__(self) -> String
Convert this UInt to a string.
A small example.
x = UInt(50)
assert_equal(repr(x), "UInt(50)")
x = UInt(50)
assert_equal(repr(x), "UInt(50)")
Returns:
The string representation of this UInt.
__hash__
β
__hash__(self) -> Self
Hash the UInt using builtin hash.
Returns:
A 64-bit hash value. This value is not suitable for cryptographic
uses. Its intended usage is for data structures. See the hash
builtin documentation for more details.
__hash__[H: _Hasher](self, mut hasher: H)
Updates hasher with this uint value.
Parameters:
- βH (
_Hasher
): The hasher type.
Args:
- βhasher (
H
): The hasher instance.
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!