Download source files - 10 Kb
Introduction
If you have every been doing any arithmetic which stretches the
limits of the build in
__int64
data type in Visual C++, then here is a class
which gives you an extra 4 bytes to play with.
Features
- Provides constructors which convert between all the basic types (including
__int64
) to CInt96
.
- All the standard operators are provided allowing the class to be used as if it
was an intrinsic data type.
- Methods are provided to convert to and from Hex, binary and decimal strings.
- Functions are available to allow individual bits to be easily set or retrieved.
The source zip file contains the CInt96
source code and a simple console
program which exercises the class.
Usage
- To use the class in your code simply include int96.cpp in your project and
#include int96.h
in which ever of your modules needs to make
calls to the classes.
- Your code will need to include MFC either statically or dynamically.
- To see the class in action, have a look at the code in
main()
in the
module test.cpp.
History
v1.0 (11 July 1999)
V1.01 (17 October 1999)
- Fix for the function
FormatAsDecimal()
which was failing when the
number starts with a "10".
V1.02 (26 October 1999)
- Fixed bug in
operator!=
.
- Fixed bug in
operator^
.
- Fixed bug in
operator|
.
- Fixed bug in
operator&
.
- All relational and equality operators now return
int
instead of
BOOL
.
- Provision of operators which convert back to basic C types.
- Improved the performance of
operator*
.
- Fixed problem with 0/0 which was returning 0 instead of the correct value of undefined,
i.e. divide by 0 exception. Thanks to G.J.E. Visser for finding all these bugs <g>.
V1.03 (28 October 1999)
- Fixed another bug in
operator!=
.
- Removed the use of
MAXDWORD
and replaced with 0xFFFFFFFF.
V1.04 (5 December 1999)
- Fixed problem with
operator*
which was giving incorrect
results in some cases. Thanks go to G.J.E. Visser for finding this.
Planned Enhancements
- Optimize the code through the use of inlining and improved algorithms.
- Generalize the class to make it arbitrary precision.
- Improve the sample app as at the moment it just tests out most of the methods
provided by
CInt96
.
- If you have any other suggested additions, comments or bug fixes,
please let me know so that I can try my best to incorporate them into the next
version of
CInt96
.
Contacting the Author
PJ Naughter
Email: pjn@indigo..ie
Web: http://www.naughter.com
5 December 1999