Untitled
unknown
c_cpp
6 months ago
1.9 kB
5
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