zoukankan      html  css  js  c++  java
  • 习题汇总

    习题2.65

    当x有偶数个1时输出1,否则输出0。

    代码:

     测试数据:

    0=00000000

    3=00000011

    167=10100111

    243=11110011

    原理:

    在假设int有32位的情况下,第一次异或的结果得出每两位1的个数的奇偶性,以末两位为例,若末两位为偶数个1,则得数最后一位为0,以此类推;

    同理第二次异或得出每四位1的个数的奇偶性,以末四位为例,若末四位为偶数个1,则得数最后一位为0,以此类推;

    ......

    五次异或后,最后一位得出所有32位的1的奇偶性,若有偶数个1,最后一位为0,否则为1,将得数与1异或为返回值。

     
     

    习题3.66


    由题假设: CNT=A;

    struct a_struct{

    int idx;

    int x[B];

    }

    c代码可得:

    n=*bp+*(bp+4+4A(B+1))

    ap=bp+4+4(B+1)i

    ap->idx=*(bp+4+4(B+1)i)

    ap->x[ap->idx]=bp+4+4(B+1)i+4+4·*(bp+4+4(B+1)i)=n

    另反汇编代码可得:

    5   i->eax

    6   bp->ecx

    7   28i->ebx

    8   8i->edx

    9   7i->edx

    10  *(28i+bp+4)+7i->edx

    11  *(bp+200)->eax

    12  *bp+*(bp+200) ->eax

    13  eax->*(edx·4+bp+8)

    可轻易看出反汇编代码12行对应c代码第9行,反汇编代码13行对应c代码11行。

    故综上可得:

    4A(B+1)+4=200且4(B+1)=28

    故A=7,B=6。

  • 相关阅读:
    类 2020年8月19
    随便一写,明天改正
    os模块 2020年8月16
    time 模块 2020年8月16
    collections模块 2020年8月16
    正则跟re模块内容2020年8月16日
    【C++设计模式二】C++工厂模式
    【C++设计模式一】C++简单工厂模式
    【01-springmvc快速入门、组件解析】
    03-【Spring 的 AOP】
  • 原文地址:https://www.cnblogs.com/huyufeng/p/4983589.html
Copyright © 2011-2022 走看看