#include int main() { int128 x = 0xffff, y = 0x2; x <<= 64; x += 0xffff; y <<= 64; y += 0123; y |= 0x8000000000000000; x = -x; sout | x; sout | sign(x); x = -x; sout | sign(x); sout | nl; sout | bin(x); sout | upcase(bin(x)); sout | nobase(bin(x)); sout | wd( 95, upcase(bin(x)) ); sout | wd( 95,90, upcase(bin(x)) ); sout | wd( 25,30, upcase(hex(x)) ); sout | nl; printf( "%#.10o\n", 0123 ); sout | wd( 1,10, oct(0123) ); sout | oct(x); sout | nobase(oct(x)); sout | wd( 45, oct(0123) ); sout | wd( 45,40, oct(0123) ); sout | wd( 40,45, oct(0123) ); sout | wd( 45, oct(x) ); sout | wd( 45,40, oct(x) ); sout | wd( 40,45, oct(x) ); sout | left(wd( 45, oct(0123) )) | 'X'; sout | left(wd( 45, oct(x) )) | 'X'; sout | left(wd( 45, oct(y) )) | 'X'; sout | left(wd( 45,40, oct(0123) )) | 'X'; sout | left(wd( 45,40, oct(x) )) | 'X'; sout | left(wd( 45,40, oct(y) )) | 'X'; sout | left(wd( 40,45, oct(0123) )) | 'X'; sout | left(wd( 40,45, oct(x) )) | 'X'; sout | left(wd( 40,45, oct(y) )) | 'X'; printf( "%#-1.10oX\n", 0123 ); sout | left(wd( 1,10, oct(0123) )) | 'X'; printf( "%#-40.10oX\n", 0123 ); sout | left(wd( 40,10, oct(0123) )) | 'X'; sout | left(wd( 40,10, oct(x) )) | 'X'; sout | left(wd( 40,10, oct(y) )) | 'X'; sout | left(wd( 10,40, oct(0123) )) | 'X'; sout | left(wd( 10,40, oct(x) )) | 'X'; sout | left(wd( 10,40, oct(y) )) | 'X'; y = 01234567; sout | left(wd( 45, 49, oct(y) )) | 'X'; y = -y; sout | wd(0, oct(y)) | 'Y'; sout | left(wd(0, oct(y))) | 'Y'; sout | nl; sout | hex(x); sout | upcase(hex(x)); sout | nobase(hex(x)); sout | wd( 45, upcase(hex(x)) ); sout | wd( 45,40, upcase(hex(x)) ); sout | wd( 45,49, upcase(hex(x)) ); sout | left(wd( 45, upcase(hex(x)) )) | 'X'; sout | left(wd( 45,40, upcase(hex(x)) )) | 'X'; sout | left(wd( 45,49, upcase(hex(x)) )) | 'X'; sout | nl; int128 divisor = 0x4b3b4ca85a86c47a; divisor <<= 16; divisor += 0x98a224000000000; // base 2 sout | "base 2"; sout | bin(divisor); sout | upcase(bin(divisor)); sout | wd(38, upcase(bin(divisor))); sout | wd(40, upcase(bin(divisor))); sout | wd(40, 38, upcase(bin(divisor))); sout | wd(40, 30, upcase(bin(divisor))); sout | pad0(sign(wd(40, 38, upcase(bin(divisor))))); sout | nl; // oct sout | "base 8"; sout | upcase(oct(divisor)); sout | wd(38, upcase(oct(divisor))); sout | wd(40, upcase(oct(divisor))); sout | wd(40, 38, upcase(oct(divisor))); sout | wd(40, 30, upcase(oct(divisor))); sout | pad0(sign(wd(40, 38, upcase(oct(divisor))))); sout | nl; // decimal sout | "base 10"; sout | divisor; sout | wd(2, divisor); sout | wd(3, divisor); sout | wd(10, divisor); sout | wd(24, divisor); sout | wd(38, divisor); sout | wd(39, divisor); sout | wd(40, divisor); sout | wd(40, 30, divisor); sout | wd(40, 38, divisor); sout | wd(40, 40, divisor); sout | pad0(wd(40, divisor)); sout | pad0(sign(wd(40,divisor))); sout | nl; // hex sout | "base 16"; sout | upcase(hex(divisor)); sout | wd(38, upcase(hex(divisor))); sout | wd(40, upcase(hex(divisor))); sout | wd(40, 38, upcase(hex(divisor))); sout | wd(40, 30, upcase(hex(divisor))); sout | pad0(sign(wd(40, 38, upcase(hex(divisor))))); sout | nl; // extras sout | "extras"; sout | bin(divisor); sout | upcase(bin(divisor)); sout | oct(divisor); sout | hex(divisor); sout | upcase(hex(divisor)); sout | nobase(bin(divisor)) | nobase(oct(divisor)) | nobase(hex(divisor)); sout | sign(divisor); sout | -divisor; sout | sign(-divisor); sout | wd(2, divisor); sout | wd(3,10,divisor); sout | left(wd(40,divisor)) | 'X'; sout | left(sign(wd(40, divisor))) | 'X'; sout | left(sign(wd(0,40, divisor))) | 'X'; printf( "%-+1.40dX\n", 123456789 ); int128 i128; unsigned int128 ui128; i128 = -10; for ( 25 ) { sout | left( sign( wd( 20, i128 ) ) ) | left( wd( 20, hex( i128 ) ) ) | left( wd( 20, oct( i128 ) ) ); sout | left( wd( 20, bin( i128 ) ) ); i128 += 1; } sout | nl; i128 = 0x7fffffffffffffff; i128 <<= 64; i128 += 0xfffffffffffffffa; for ( 20 ) { sout | i128; sout | left( sign( wd( 45, i128 ) ) ) | left( wd( 45, hex( i128 ) ) ) | left( wd( 45, oct( i128 ) ) ); sout | left( wd( 45, bin( i128 ) ) ); i128 += 1; } sout | nl; ui128 = 0x7fffffffffffffff; ui128 <<= 64; ui128 += 0xfffffffffffffffa; for ( 20 ) { sout | ui128; ui128 += 1; } sout | nl; ui128 = 0xffffffffffffffff; ui128 <<= 64; ui128 += 0xfffffffffffffffa; for ( 20 ) { sout | ui128; ui128 += 1; } }