写了一个异或的函数

//TruncatedStepRow
template<size_t WIDTH> template<size_t W>
TruncatedStepRow<WIDTH>::TruncatedStepRow(const TruncatedStepRow<W>&amp; a, const TruncatedStepRow<W>&amp; b, size_t len, size_t lenIndices, int lenTrim) :
        StepRow<WIDTH> {a}
{
    cout<<&quot;len=&quot;<<len<<endl;                            //30
    cout<<&quot;lenIndices=&quot;<<lenIndices<<endl;              //1
 //   cout<<&quot;lenTrim=&quot;<<lenTrim<<endl;                    //3
    assert(len+lenIndices <= W);
    assert(len-lenTrim+(2*lenIndices) <= WIDTH);

//    unsigned char  hash[len-lenTrim];
    
    cout<<&quot;colision hash a =&quot;;
    for(long long unsigned int i=0;i<len;i++){
        cout<<a.hash[i];
    }
    cout<<endl;
    cout<<&quot;colision hash b =&quot;;
    for(long long unsigned int i=0;i<len;i++){
        cout<<b.hash[i];
    }
    cout<<endl;

        for (int i = lenTrim; i < (int)len-lenTrim; i++){
        hash[i-lenTrim] = a.hash[i] ^ a.hash[i];
    }

 //    cout<<endl;
    print_hash(len-lenTrim);

    if (a.IndicesBefore(b, len, lenIndices)) {
        std::copy(a.hash+len, a.hash+len+lenIndices, hash+len-lenTrim);
        std::copy(b.hash+len, b.hash+len+lenIndices, hash+len-lenTrim+lenIndices);

    } else {
        std::copy(b.hash+len, b.hash+len+lenIndices, hash+len-lenTrim);
        std::copy(a.hash+len, a.hash+len+lenIndices, hash+len-lenTrim+lenIndices);

    }
    //cout<<endl;
    //cout<<endl;
}

相同的值异或应该是0才对,为什么输出还是4或者7 啊??
全部评论

相关推荐

渴望wlb的牛油果很...:直说卡第一学历不就行了 非得拐弯抹角
点赞 评论 收藏
分享
09-25 00:00
已编辑
电子科技大学 Java
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的 const flattern = (obj) => { const res = {}; const dfs = (curr, path) => { if(typeof curr === 'object' && curr !== null) { const isArray = Array.isArray(curr); for(let key in curr) { const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key; dfs(curr[key], newPath); } } else { res[path] = curr } } dfs(obj); return res; }
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务