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'来做到这一点。不同的表示,相同的结果。 –