0
所以我的課的想法是把數字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
您可能想要谷歌的「二進制編碼的十進制」的靈感。 –
@AndyG他已經通過減去'0'來做到這一點。不同的表示,相同的結果。 –