55 for(
unsigned i=0; i<n.size(); i++)
56 if(!(isalnum(n[i]) || (n[i]==
'-' && i==0)))
70 bool neg=a.is_negative();
78 std::size_t len = a.digits(2) + 2;
79 char *buffer=
new char[len];
80 char *s = a.as_string(buffer, len, 2);
82 std::string result(s);
86 if(result.size()<width)
89 fill.resize(width-result.size(),
'0');
92 else if(result.size()>width)
93 result=result.substr(result.size()-width, width);
97 for(std::size_t i=0; i<result.size(); i++)
98 result[i]=(result[i]==
'0')?
'1':
'0';
106 unsigned len = n.digits(base) + 2;
107 char *buffer=
new char[len];
108 char *s = n.as_string(buffer, len, base);
110 std::string result(s);
125 if(n.size()<=(
sizeof(
unsigned long)*8))
129 unsigned long mask=1;
130 mask=mask << (n.size()-1);
135 unsigned long other_bits=0;
137 for(std::string::const_iterator it=++n.begin();
149 return top_bit+other_bits;
155 mask=mask << (n.size()-1);
161 for(std::string::const_iterator it=++n.begin();
174 if(n.find_first_not_of(
"01")!=std::string::npos)
177 if(is_signed && n[0]==
'1')
184 return BigInt(n.c_str(), 2);
191 assert(n.is_ulong());
199 assert(ull <= std::numeric_limits<std::size_t>::max());
200 return (std::size_t)ull;
207 assert(ull <= std::numeric_limits<unsigned>::max());
208 return (
unsigned)ull;
bool is_signed(const typet &t)
Convenience function – is the type signed?
const mp_integer string2integer(const std::string &n, unsigned base)
const std::string integer2string(const mp_integer &n, unsigned base)
mp_integer::ullong_t integer2ulong(const mp_integer &n)
const mp_integer binary2integer(const std::string &n, bool is_signed)
convert binary string representation to mp_integer
mp_integer operator<<(const mp_integer &a, const mp_integer &b)
mp_integer operator>>(const mp_integer &a, const mp_integer &b)
unsigned integer2unsigned(const mp_integer &n)
const std::string integer2binary(const mp_integer &n, std::size_t width)
std::size_t integer2size_t(const mp_integer &n)