infinint left shift operation
Wesley Leggette <lists-+42/j/[email protected]> Tue, 21 Jun 2005 21:15:19 +0200
| Newsgroups | gmane.comp.sysutils.backup.dar.general |
|---|---|
| Message-ID | <1119381319.29973.6.camel@localhost> |
Hi,
When using the "operator <<=" I'm getting weird results:
[ libdarc code ]
extern "C" void dar_infinint_shiftl( dar_infinint** a, dar_infinint* b )
{
infinint* ar = (infinint*)*a;
infinint* br = (infinint*)b;
*ar <<= *br;
}
extern "C" void dar_infinint_shiftli( dar_infinint** a, int bit )
{
infinint* ar = (infinint*)*a;
*ar <<= bit;
//*a = (dar_infinint*)ar;
}
I call the equivalent of dar_infinint_shiftl(4, 1), getting the
following results:
a original = 4
b original = 1
value = 2048
Both operators return incorrect values.
I also get:
a original = 1000
b original = 1
value = 512000
Right shift seems to work okay.
Thanks.
--
Wesley Leggette <lists-+42/j/[email protected]>
GPG Key: http://www.kaylix.net/kaylix.asc or http://pgp.mit.edu
GPG Fingerprint: 9B6F 19FB 5296 5E6C 21FE 7614 2A20 5688 F848 9BDD
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQBCuGdHKiBWiPhIm90RAmBgAJkBWNbO5Sj/spXWPiNRlMc25zSvxACgrcyX p0mctT25IKcyh1IMMdwUPaE= =Lgdu -----END PGP SIGNATURE-----