View source code
							
							
						
								Display the source code in std/bigint.d from which this
								page was generated on github.
							
						
							Report a bug
							
						
								If you spot a problem with this page, click here to create a
								Bugzilla issue.
							
						
							
								Improve this page
							
							
					
								Quickly fork, edit online, and submit a pull request for this page.
								Requires a signed-in GitHub account. This works well for small changes.
								If you'd like to make larger changes you may want to consider using
								local clone.
							
						Struct std.bigint.BigInt
A struct representing an arbitrary precision integer.
						
				struct BigInt
				;
						
					
				All arithmetic operations are supported, except unsigned shift right (>>>).
 Bitwise operations (|, &, ^, ~) are supported, and behave as if BigInt was
 an infinite length 2's complement number.
BigInt implements value semantics using copy-on-write. This means that assignment is cheap, but operations such as x++ will cause heap allocation. (But note that for most bigint operations, heap allocation is inevitable anyway.)
Constructors
| Name | Description | 
|---|---|
| this(s) | Construct a BigIntfrom a decimal or hexadecimal string. The number must
 be in the form of a decimal or hex literal. It may have a leading+or-sign, followed by0xor0Xif hexadecimal. Underscores are
 permitted in any location after the0xand/or the sign of the number. | 
| this(isNegative, magnitude) | Construct a BigIntfrom a sign and a magnitude. | 
| this(x) | Construct a BigIntfrom a built-in integral type. | 
| this(x) | Construct a BigIntfrom anotherBigInt. | 
Properties
| Name | Type | Description | 
|---|---|---|
| uintLength[get] | ulong | Number of significant uints which are used in storing this number.
The absolute value of thisBigIntis always < 232*uintLength | 
| ulongLength[get] | ulong | Number of significant ulongs which are used in storing this number.
The absolute value of thisBigIntis always < 264*ulongLength | 
Methods
| Name | Description | 
|---|---|
| getDigit(n) | Gets the nth number in the underlying representation that makes up the whole BigInt. | 
| opAssign(x) | Assignment from built-in integer types. | 
| opAssign(x) | Assignment from another BigInt. | 
| opBinary(y) | Implements binary operators between BigInts. | 
| opBinary(y) | Implements binary operators between BigInt's and built-in integers. | 
| opBinary(y) | Implements a narrowing remainder operation with built-in integer types. | 
| opBinaryRight(y) | Implements operators with built-in integers on the left-hand side and BigInton the right-hand side. | 
| opCast() | Implements casting to bool. | 
| opCast() | Implements casting to integer types. | 
| opCast() | Implements casting to floating point types. | 
| opCast() | Implements casting to/from qualified BigInt's. | 
| opCmp(y) | Implements 3-way comparisons of BigIntwithBigIntorBigIntwith
        built-in numeric types. | 
| opEquals(y) | Implements BigIntequality test with otherBigInt's and built-in
        numeric types. | 
| opOpAssign(y) | Implements assignment operators from built-in integers of the form BigInt op= integer. | 
| opOpAssign(y) | Implements assignment operators of the form BigInt op= BigInt. | 
| opUnary() | Implements BigIntunary operators. | 
| toHash() | |
| toInt() | |
| toLong() | |
| toString(sink, formatString) | Convert the BigInttostring, passing it to the given sink. | 
Example
BigInt a = "9588669891916142";
BigInt b = "7452469135154800";
auto c = a * b;
writeln(c); // BigInt("71459266416693160362545788781600")
auto d = b * a;
writeln(d); // BigInt("71459266416693160362545788781600")
writeln(d); // c
d = c * BigInt("794628672112");
writeln(d); // BigInt("56783581982794522489042432639320434378739200")
auto e = c + d;
writeln(e); // BigInt("56783581982865981755459125799682980167520800")
auto f = d + c;
writeln(f); // e
auto g = f - c;
writeln(g); // d
g = f - d;
writeln(g); // c
e = 12345678;
g = c + e;
auto h = g / b;
auto i = g % b;
writeln(h); // a
writeln(i); // e
BigInt j = "-0x9A56_57f4_7B83_AB78";
BigInt k = j;
j ^^= 11;
writeln(k^^11); // j
Authors
Don Clugston
License
					Copyright © 1999-2024 by the D Language Foundation | Page generated by ddox.