gosh dammit
This commit is contained in:
parent
a4255c3bb2
commit
a3f4c78465
|
@ -5,29 +5,29 @@
|
|||
|
||||
#include "../helpers/println.hpp"
|
||||
|
||||
struct PascalString{
|
||||
int length; // number of chars used
|
||||
char characters[256]; // chars of some character string
|
||||
struct PascalString {
|
||||
int length; // number of chars used
|
||||
char characters[256]; // chars of some character string
|
||||
};
|
||||
|
||||
char cStringArea[1024];
|
||||
|
||||
int hexDigitToInt(char hexDigit) {
|
||||
int value = 0;
|
||||
int value = 0;
|
||||
|
||||
if(hexDigit > 47 && hexDigit < 58)
|
||||
value = hexDigit - 48;
|
||||
if (hexDigit > 47 && hexDigit < 58)
|
||||
value = hexDigit - 48;
|
||||
|
||||
if(hexDigit > 96 && hexDigit < 103)
|
||||
value = hexDigit - 97 + 10;
|
||||
if (hexDigit > 96 && hexDigit < 103)
|
||||
value = hexDigit - 97 + 10;
|
||||
|
||||
return value;
|
||||
return value;
|
||||
}
|
||||
|
||||
int hexStringToInt(PascalString binaryDigits) {
|
||||
int returnValue = 0;
|
||||
|
||||
for(int i = 0; i <= binaryDigits.length; ++i) {
|
||||
for (int i = 0; i <= binaryDigits.length; ++i) {
|
||||
returnValue += binaryDigits.characters[i];
|
||||
}
|
||||
|
||||
|
@ -35,17 +35,17 @@ int hexStringToInt(PascalString binaryDigits) {
|
|||
}
|
||||
|
||||
void printPascalString(PascalString s) {
|
||||
for(int i = 0; i <= s.length; i++) {
|
||||
for (int i = 0; i <= s.length; i++) {
|
||||
print(s.characters[i]);
|
||||
}
|
||||
println("");
|
||||
}
|
||||
|
||||
PascalString intToDual(int n) {
|
||||
|
||||
|
||||
int i = std::to_string(n).length() * 4;
|
||||
PascalString string = {i};
|
||||
while(n >= 1) {
|
||||
while (n >= 1) {
|
||||
string.characters[i] = (n % 2) + '0';
|
||||
n = n / 2;
|
||||
i--;
|
||||
|
@ -54,24 +54,30 @@ PascalString intToDual(int n) {
|
|||
}
|
||||
|
||||
char intToHexChar(int n) {
|
||||
if(n > 9) {
|
||||
switch(n) {
|
||||
case 10: return 'A';
|
||||
case 11: return 'B';
|
||||
case 12: return 'C';
|
||||
case 13: return 'D';
|
||||
case 14: return 'E';
|
||||
case 15: return 'F';
|
||||
default: return 'X';
|
||||
if (n > 9) {
|
||||
switch (n) {
|
||||
case 10:
|
||||
return 'A';
|
||||
case 11:
|
||||
return 'B';
|
||||
case 12:
|
||||
return 'C';
|
||||
case 13:
|
||||
return 'D';
|
||||
case 14:
|
||||
return 'E';
|
||||
case 15:
|
||||
return 'F';
|
||||
default:
|
||||
return 'X';
|
||||
}
|
||||
}
|
||||
else return n + '0';
|
||||
} else return n + '0';
|
||||
}
|
||||
|
||||
PascalString intToHex(int n) {
|
||||
int i = std::to_string(n).length();
|
||||
PascalString string = {i};
|
||||
while(n >= 1) {
|
||||
while (n >= 1) {
|
||||
string.characters[i] = intToHexChar(n % 16);
|
||||
n = n / 16;
|
||||
i--;
|
||||
|
@ -81,24 +87,21 @@ PascalString intToHex(int n) {
|
|||
}
|
||||
|
||||
PascalString bitwiseDualAnd(PascalString a, PascalString b) {
|
||||
PascalString shortString = a.length < b.length ? a : b;
|
||||
PascalString longString = a.length > b.length ? a : b;
|
||||
PascalString result = {longString.length, '0'};
|
||||
|
||||
for(int i = longString.length; i >= 0; --i) {
|
||||
if(shortString.length < i) result.characters[i] = longString.characters[i];
|
||||
result.characters[i] = longString.characters[i] & shortString.characters[i];
|
||||
PascalString result = {a.length, '0'};
|
||||
|
||||
for (int i = b.length; i >= 0; --i) {
|
||||
if (a.length < i) result.characters[i] = a.characters[i];
|
||||
result.characters[i] = a.characters[i] & b.characters[i];
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
PascalString bitwiseHexAnd(PascalString a, PascalString b) {
|
||||
PascalString result = {a.length, '0'};
|
||||
|
||||
for(int i = b.length; i >= 0; --i) {
|
||||
if(a.length < i) result.characters[i] = a.characters[i];
|
||||
println("i: ", i, " ", a.characters[i] & b.characters[i]);
|
||||
for (int i = b.length; i >= 0; --i) {
|
||||
if (a.length < i) result.characters[i] = a.characters[i];
|
||||
result.characters[i] = a.characters[i] & b.characters[i];
|
||||
}
|
||||
|
||||
|
@ -110,53 +113,53 @@ int to_c_string(PascalString s) {
|
|||
}
|
||||
|
||||
void line() {
|
||||
println("===================================");
|
||||
println("===================================");
|
||||
}
|
||||
|
||||
int main(int argc, char** argv, char** envp) {
|
||||
int main(int argc, char **argv, char **envp) {
|
||||
|
||||
PascalString s = {3, '1', '0', '0'};
|
||||
PascalString s2 = {4, 'f', 'f', 'f', 'f'};
|
||||
println(hexStringToInt(s));
|
||||
line();
|
||||
println(hexStringToInt(s2));
|
||||
line();
|
||||
println(hexDigitToInt('d'));
|
||||
line();
|
||||
println(hexDigitToInt('9'));
|
||||
line();
|
||||
println(hexDigitToInt('2'));
|
||||
|
||||
printPascalString(s2);
|
||||
line();
|
||||
|
||||
int controlRegister = 128;
|
||||
controlRegister |= 64+32;
|
||||
controlRegister ^=16;
|
||||
controlRegister &= 128+64;
|
||||
controlRegister <<= 1;
|
||||
|
||||
println(controlRegister);
|
||||
line();
|
||||
println(intToHexChar(6));
|
||||
line();
|
||||
println(intToHexChar(10));
|
||||
line();
|
||||
printPascalString(intToDual(4106));
|
||||
line();
|
||||
printPascalString(intToHex(965));
|
||||
line();
|
||||
printPascalString(intToHex(1956));
|
||||
PascalString s = {3, '1', '0', '0'};
|
||||
PascalString s2 = {4, 'f', 'f', 'f', 'f'};
|
||||
println(hexStringToInt(s));
|
||||
line();
|
||||
println(hexStringToInt(s2));
|
||||
line();
|
||||
println(hexDigitToInt('d'));
|
||||
line();
|
||||
println(hexDigitToInt('9'));
|
||||
line();
|
||||
println(hexDigitToInt('2'));
|
||||
|
||||
line();
|
||||
printPascalString(bitwiseDualAnd({3, '1', '1', '0'}, {4, '1', '1', '1', '0'}));
|
||||
line();
|
||||
printPascalString(bitwiseDualAnd({3, '1', '1', '1'}, {4, '1', '1', '1', '0'}));
|
||||
line();
|
||||
printPascalString(bitwiseDualAnd({3, '1', '1', '0'}, {4, '1', '1', '1', '1'}));
|
||||
line();
|
||||
printPascalString(bitwiseDualAnd({3, '0', '1', '0'}, {4, '1', '0', '1', '1'}));
|
||||
|
||||
return 0;
|
||||
printPascalString(s2);
|
||||
line();
|
||||
|
||||
int controlRegister = 128;
|
||||
controlRegister |= 64 + 32;
|
||||
controlRegister ^= 16;
|
||||
controlRegister &= 128 + 64;
|
||||
controlRegister <<= 1;
|
||||
|
||||
println(controlRegister);
|
||||
line();
|
||||
println(intToHexChar(6));
|
||||
line();
|
||||
println(intToHexChar(10));
|
||||
line();
|
||||
printPascalString(intToDual(4106));
|
||||
line();
|
||||
printPascalString(intToHex(965));
|
||||
line();
|
||||
printPascalString(intToHex(1956));
|
||||
|
||||
line();
|
||||
printPascalString(bitwiseDualAnd({3, '1', '1', '0'}, {4, '1', '1', '1', '0'}));
|
||||
line();
|
||||
printPascalString(bitwiseDualAnd({3, '1', '1', '1'}, {4, '1', '1', '1', '0'}));
|
||||
line();
|
||||
printPascalString(bitwiseDualAnd({3, '1', '1', '0'}, {4, '1', '1', '1', '1'}));
|
||||
line();
|
||||
printPascalString(bitwiseDualAnd({3, '0', '1', '0'}, {4, '1', '0', '1', '1'}));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue