fork download
  1. #include <limits>
  2. #include <iostream>
  3.  
  4. unsigned long long pow2( unsigned int n )
  5. {
  6. if( n >= std::numeric_limits<unsigned long long>::digits ) return 0 ;
  7.  
  8. unsigned long long result = 1 ;
  9.  
  10. // return result << n ;
  11.  
  12. for( unsigned int i=0; i<n; ++i )
  13. {
  14. result *= 2 ;
  15. }
  16.  
  17. return result;
  18. }
  19.  
  20. int main()
  21. {
  22. for( unsigned int n = 0 ; n < 128; ++n )
  23. {
  24. unsigned long long result = pow2(n) ;
  25.  
  26. if( result > 0 ) std::cout << "2^" << n << " == " << result << '\n' ;
  27.  
  28. else
  29. {
  30. std::cerr << "the number 2^" << n
  31. << " is too big to be represented by an unsigned long long\n" ;
  32. return 0 ;
  33. }
  34. }
  35. }
  36.  
Success #stdin #stdout #stderr 0s 3296KB
stdin
Standard input is empty
stdout
2^0 == 1
2^1 == 2
2^2 == 4
2^3 == 8
2^4 == 16
2^5 == 32
2^6 == 64
2^7 == 128
2^8 == 256
2^9 == 512
2^10 == 1024
2^11 == 2048
2^12 == 4096
2^13 == 8192
2^14 == 16384
2^15 == 32768
2^16 == 65536
2^17 == 131072
2^18 == 262144
2^19 == 524288
2^20 == 1048576
2^21 == 2097152
2^22 == 4194304
2^23 == 8388608
2^24 == 16777216
2^25 == 33554432
2^26 == 67108864
2^27 == 134217728
2^28 == 268435456
2^29 == 536870912
2^30 == 1073741824
2^31 == 2147483648
2^32 == 4294967296
2^33 == 8589934592
2^34 == 17179869184
2^35 == 34359738368
2^36 == 68719476736
2^37 == 137438953472
2^38 == 274877906944
2^39 == 549755813888
2^40 == 1099511627776
2^41 == 2199023255552
2^42 == 4398046511104
2^43 == 8796093022208
2^44 == 17592186044416
2^45 == 35184372088832
2^46 == 70368744177664
2^47 == 140737488355328
2^48 == 281474976710656
2^49 == 562949953421312
2^50 == 1125899906842624
2^51 == 2251799813685248
2^52 == 4503599627370496
2^53 == 9007199254740992
2^54 == 18014398509481984
2^55 == 36028797018963968
2^56 == 72057594037927936
2^57 == 144115188075855872
2^58 == 288230376151711744
2^59 == 576460752303423488
2^60 == 1152921504606846976
2^61 == 2305843009213693952
2^62 == 4611686018427387904
2^63 == 9223372036854775808
stderr
the number 2^64 is too big to be represented by an unsigned long long