This is an automated email from the ASF dual-hosted git repository.

humbedooh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni-website.git

commit 069d401f1ae6950f06c89f737e6609f6a80f4c1e
Author: Antoine Toulme <anto...@lunar-ocean.com>
AuthorDate: Sat Jan 2 23:19:14 2021 -0800

    Add uints operations
---
 tutorials/creating-uints.md   | 36 ++++++++++++++++++++++++-
 tutorials/uints-operations.md | 61 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 96 insertions(+), 1 deletion(-)

diff --git a/tutorials/creating-uints.md b/tutorials/creating-uints.md
index 49827cc..4e00855 100644
--- a/tutorials/creating-uints.md
+++ b/tutorials/creating-uints.md
@@ -5,6 +5,40 @@ description: Creating Uints
 group: nav-right
 categories: ["units", "bigints"]
 previous: getting-started-with-units.md
+next: uints-operations.md
 ---
 
-TODO
\ No newline at end of file
+NOTE: We are going to use the [`UInt256` 
class](/docs/org.apache.tuweni.units.bigints/-u-int256/index.html) for all 
examples, but the same behaviors are possible with the 
[`UInt384`](/docs/org.apache.tuweni.units.bigints/-u-int384/index.html), 
[`UInt64`](/docs/org.apache.tuweni.units.bigints/-u-int64/index.html), 
[`UInt32`](/docs/org.apache.tuweni.units.bigints/-u-int32/index.html) classes.
+
+We refer to those classes as `UInt`.
+
+# Creating Uints
+
+## `valueOf`
+
+You can initialize a `UInt` with the [static method 
`valueOf`](/docs/org.apache.tuweni.units.bigints/-u-int256/value-of.html), with 
an integer, a long, or a BigInteger object. This only accepts positive values.
+
+{%highlight java%}
+// from an int
+UInt256 value = UInt256.valueOf(42);
+// from a long
+UInt256 value = UInt256.valueOf(42L);
+// from a BigInteger
+UInt256 value = UInt256.valueOf(BigInteger.ONE);
+{%endhighlight%}
+
+## `fromBytes`
+
+You can initialize a `UInt` from a `Bytes` object, using the [`fromBytes` 
method](/docs/org.apache.tuweni.units.bigints/-u-int256/from-bytes.html).
+
+{%highlight java%}
+UInt256 value = UInt256.fromBytes(Bytes.wrap(new byte[] {0x01, 0x02, 0x03}));
+{%endhighlight%}
+
+## `fromHexString`
+
+You can initialize a `UInt` from a string representing a hexadecimal encoding 
of bytes, with an optional prefix of `0x`.
+
+{%highlight java%}
+UInt256 value = UInt256.fromHexString("0xdeadbeef");
+{%endhighlight%}
diff --git a/tutorials/uints-operations.md b/tutorials/uints-operations.md
new file mode 100644
index 0000000..4180c6a
--- /dev/null
+++ b/tutorials/uints-operations.md
@@ -0,0 +1,61 @@
+---
+layout: tutorial
+title: Unsigned Integers operations
+description: Unsigned Integers operations
+group: nav-right
+categories: ["units", "bigints"]
+previous: creating-uints.md
+---
+
+`Uints` are immutable, so all operations create a new object as the result of 
the operation.
+
+# Arithmetic operations
+
+## Adding and subtracting
+
+* 
[`add(other)`](/docs/org.apache.tuweni.units.bigints/-u-int256-value/add.html)
+* 
[`substract(other)`](/docs/org.apache.tuweni.units.bigints/-u-int256-value/subtract.html)
+
+Since these are bound integers, they will overflow and underflow if the 
operation returns a value outside the boundaries - for a `Uint256`, 0 to 2^256.
+
+For this reason, the API also contains `exact` methods that throw exceptions 
if the operations overflows or underflows.
+
+* 
[`addExact(other)`](/docs/org.apache.tuweni.units.bigints/-u-int256-value/add-exact.html)
+* 
[`subtractExact(other)`](/docs/org.apache.tuweni.units.bigints/-u-int256-value/subtract-exact.html)
+
+## Multiplying and dividing
+
+* 
[`multiply(other)`](/docs/org.apache.tuweni.units.bigints/-u-int256-value/multiply.html)
+* 
[`divide(other)`](/docs/org.apache.tuweni.units.bigints/-u-int256-value/divide.html)
+
+Additionally, the [method 
`divideCeil(other)`](/docs/org.apache.tuweni.units.bigints/-u-int256-value/divide-ceil.html)
 divides integers but returns the ceiling of the rounding.
+
+{%highlight java%}
+UInt256 result = UInt256.valueOf(12L).divide(UInt256.valueOf(5L)); // returns 2
+UInt256 resultCeiling = UInt256.valueOf(12L).divideCeil(UInt256.valueOf(5L)); 
// returns 3
+{%endhighlight%}
+
+## Modulus
+
+You can use the [method 
`mod(divisor)`](/docs/org.apache.tuweni.units.bigints/-u-int256-value/mod.html) 
to get the modulus of the value by the divisor.
+
+The [method 
`mod0`](/docs/org.apache.tuweni.units.bigints/-u-int256-value/mod0.html) is 
more forgiving - if you divide by zero, it will return zero instead of throwing 
an exception.
+
+## Power
+
+The [method 
`pow(exponent)`](/docs/org.apache.tuweni.units.bigints/-u-int256-value/pow.html)
 returns a value that is `value^exponent mod 2^256.
+
+# Boolean operations
+
+You can use the following methods to perform boolean operations:
+
+* [`not()`: bit-wise NOT of this 
value.](/docs/org.apache.tuweni.units.bigints/-u-int256/not.html)
+* [`and(other)`: bit-wise AND of this value and the supplied 
value.](/docs/org.apache.tuweni.units.bigints/-u-int256/and.html)
+* [`or(other)`: bit-wise OR of this value and the supplied 
value.](/docs/org.apache.tuweni.units.bigints/-u-int256/or.html)
+* [`xor(other)`: bit-wise XOR of this value and the supplied 
value.](/docs/org.apache.tuweni.units.bigints/-u-int256/xor.html)
+
+# Shifting bytes
+
+You can shift 
[right](/docs/org.apache.tuweni.units.bigints/-u-int256/shift-right.html) and 
[left](/docs/org.apache.tuweni.units.bigints/-u-int256/shift-left.html) the 
bits of the underlying bytes object by a given distance.
+
+This is equivalent to the `<<<` or `>>>` operators in Java.
\ No newline at end of file

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@tuweni.apache.org
For additional commands, e-mail: commits-h...@tuweni.apache.org

Reply via email to