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。

  • 相关阅读:
    文件操作与函数
    编码格式
    if、while、for快速掌握
    运算符、数据类型、数据结构
    正则表达式
    面向对象--属性
    面向对象--对象的创建
    函数的内置属性
    类型检查
    函数表达式 及 闭包
  • 原文地址:https://www.cnblogs.com/huyufeng/p/4983589.html
Copyright © 2011-2022 走看看