поэтому идея моего класса взять строку чисел const char* s = "123456654987"
я взял каждую пару числа и хранить их в одном бай num[0] = 12 , num[1] = 34
и так далее ..... это, как я это сделалсложение с использованием Битовых операторов
unsigned char* num;
num = new unsigned char[ strlen(s)/2 + strlen(s)%2];
if(strlen(s)%2 == 1)
num[0] = s[0]-'0';
unsigned int i;
int j=strlen(s)%2;
for(i=strlen(s)%2;i<strlen(s);i+=2)
{
int left = s[i] - '0';
int right = s[i+1] - '0';
num[j] = left << 4 ;
num[j] |= right;
j++;
}
, например, s [0] = 12 представлена в памяти как 00010010
не как 00000110
, но теперь, когда я пытаюсь перегрузить оператор + = я не знаю, как поступить мой лучший попробовать было это, но даже я знаю, что не собираюсь работать
int i,sum,carry=0;
for(i=this->size-1;i>=0;i--)
{
sum = ((num[i]^rhs.num[i])^carry);
carry = ((num[i] & rhs.num[i]) | (num[i] & carry)) | (rhs.num[i] & carry);
num[i] = sum;
}
anyhelp парни
Я думал, что добавление 4 бит на 4 будет работать? – user259584
Возможно, вам понадобится «двоичная кодированная десятичная цифра» Google для вдохновения. –
@ AndyG он уже делает это, вычитая '0'. Различное представление, тот же результат. –