added: Uint::BitNot2() this method has been proposed by
Arek <kmicicc AnTispam users.sourceforge.net> git-svn-id: svn://ttmath.org/publicrep/ttmath/trunk@41 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
parent
bb16c871c9
commit
bc9d528a75
|
@ -64,8 +64,8 @@
|
||||||
*/
|
*/
|
||||||
#define TTMATH_MAJOR_VER 0
|
#define TTMATH_MAJOR_VER 0
|
||||||
#define TTMATH_MINOR_VER 8
|
#define TTMATH_MINOR_VER 8
|
||||||
#define TTMATH_REVISION_VER 1
|
#define TTMATH_REVISION_VER 2
|
||||||
#define TTMATH_PRERELEASE_VER 0
|
#define TTMATH_PRERELEASE_VER 1
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
|
@ -1529,6 +1529,34 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
this method performs a bitwise operation NOT but only
|
||||||
|
on the range of <0, leading_bit>
|
||||||
|
|
||||||
|
for example:
|
||||||
|
BitNot2(8) = BitNot2( 1000(bin) ) = 111(bin) = 7
|
||||||
|
*/
|
||||||
|
void BitNot2()
|
||||||
|
{
|
||||||
|
uint table_id, index;
|
||||||
|
|
||||||
|
if( FindLeadingBit(table_id, index) )
|
||||||
|
{
|
||||||
|
for(uint x=0 ; x<table_id ; ++x)
|
||||||
|
table[x] = ~table[x];
|
||||||
|
|
||||||
|
uint mask = TTMATH_UINT_MAX_VALUE;
|
||||||
|
uint shift = TTMATH_BITS_PER_UINT - index - 1;
|
||||||
|
|
||||||
|
if(shift)
|
||||||
|
mask >>= shift;
|
||||||
|
|
||||||
|
table[table_id] ^= mask;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
table[0] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
Loading…
Reference in New Issue