Untitled
unknown
c_cpp
a year ago
1.9 kB
9
Indexable
long long hexaToDec(const char &hx)
{
return (hx >= '0' && hx <= '9') ? (hx - '0') : (hx - 'A' + 10);
}
string decToHexa(const long long &x)
{
if (x == 0)
return "";
int curr = (x % 16);
string currChar;
if (curr > 9)
currChar = (curr % 10) + 'A';
else
currChar = to_string(curr);
return decToHexa(x / 16) + currChar;
}
string binToHexa(string bin)
{
string x = bin.substr(0, 4), y = bin.substr(4, 8);
int sumX = 0, sumY = 0;
for (int i = 3; i >= 0; i--)
{
sumX += pow(2, 3 - i) * (x[i] - '0');
}
for (int i = 3; i >= 0; i--)
{
sumY += pow(2, 3 - i) * (y[i] - '0');
}
string xx = decToHexa(sumX), yy = decToHexa(sumY);
return xx + yy;
}
string addTwoBin(string num1, string num2)
{
while (num1.size() < num2.size())
num1 = "0" + num1;
while (num2.size() < num1.size())
num2 = "0" + num2;
string result = "";
int carry = 0;
for (int i = num1.size() - 1; i >= 0; i--)
{
int curr = ((num1[i] - '0') + (num2[i] - '0') + carry);
result.push_back((curr % 2) + '0');
carry = (curr > 1);
}
if (carry > 0)
result.push_back(carry + '0');
reverse(result.begin(), result.end());
return result;
}
void TwosComp(string &bin)
{
for (int i = 7; i >= 0; i--)
{
if (bin[i] == '1')
{
i--;
while (i != -1)
{
if (bin[i] == '1')
bin[i] = '0';
else if (bin[i] == '0')
bin[i] = '1';
i--;
}
}
}
}
string HexaToBin(string x)
{
int num = stoi(x);
string ans = "0000";
for (int i = 0; i < 4; i++)
{
if (num & (1 << i))
{
ans[3 - i] = '1';
}
}
return ans;
}
bool IsHexaNumNeg(string xy)
{
string x,binX;
x = hexaToDec(xy[0]);
binX = HexaToBin(x);
if (binX[0] == '1')
return true;
else
return false;
}Editor is loading...
Leave a Comment