#!/usr/bin/perl use warnings; use strict; use Math::BigInt; my $num = Math::BigInt->new('0x01'); my $mask1 = Math::BigInt->new('0x0FFFFFFFF')->blsft(32); my $mask2 = Math::BigInt->new('0x0FFFFFFFF'); print "Number : ", $num->as_hex(), "\n"; $num->blsft(32); print "Num shifted : ", $num->as_hex(), "\n"; # # Split result into something that can be packed. # my $highorder = $num->copy()->band($mask1)->brsft(32); my $loworder = $num->copy()->band($mask2); print "High bits : ", $highorder->numify(), "\n"; print "Low bits : ", $loworder->numify(), "\n"; #### C:\Code>perl bigint_shift.pl Number : 0x1 Num shifted : 0x100000000 High bits : 1 Low bits : 0