zoukankan      html  css  js  c++  java
  • 20135220谈愈敏-第二章家庭作业

    第二章家庭作业

    2.59

    题目要求:编写一个C表达式,生成一个字,由x的最低有效字节和y中剩下的字节组成。

    思想:首先取出x的最低有效字节,采用 x & 0xFF 的方法,取出y的剩下字节采用 y & ~0xFF 的方法,这里都是运用到了与1相与是本身,与0相与是0的思想。

    然后考虑到与0相或是本身,把这两部分相或就能得到结果。

    具体代码与实践:

    2.60

    题目要求:将字节从低(0)到高编号,写出函数实现将参数x的字节i被替换成字节b。

    思想:首先思考如果要替换,先将x的字节i变成0,把字节b通过相或的办法“装”到相应位置即可。

    将0xFF向左移到对应x的字节i的位置取反后&x就能把字节i变成0,那要左移多少位呢?i字节对应8*i位,即i<<3位,所以第一步是 x & ~(0xFF << (i<<3))。为了能够把b“装”到正确位置,要左移相同的位数,即 b << (i<<3)。最后把这两部分相或即可。

    具体代码与实践:

    2.61

    题目要求:编写一个C表达式,下述条件中产生1,其他情况为0。

    A:x的任何位都等于1

    思想:为了保证任何位都是1的情况下才输出1,可以先按位取反 ,这样任何位都应该是0,然后运用逻辑运算就可以产生1。

    具体代码与实践:

    B:x的任何位都等于0

    思想:为了保证任何位都是0(数值为0)的情况下才输出1,直接运用逻辑运算就可以产生1,只要有一位不是0,这个数值就不是0,逻辑运算后自然会是0.

    具体代码与实践:

    C:x的最高有效字节中的位都等于1

    思想:联系A中的情况,只要把这里的x的最高字节替换A中的x即可,是相似的原理。

    那如何取出最高有效字节呢?这里又可以联系2.60中的方法,主体是将x右移得到,那右移多少位呢?计算除最高有效字节以外有多少位:(sizeof(int)-1) << 3

    最后套用A中的公式就是:! ~ (x >> ( (sizeof(int)-1) << 3 )

    具体代码与实践:

    D:x的最低有效字节中的位都等于0

    思想:联系B中的情况,只要把这里的x的最低字节替换B中的x即可,是相似的原理。

    获取x的最低字节比较简单:x & 0xFF

    最后套用B中的公式就是:! (x & 0xFF)

    具体代码与实践:

    [问题]多数代码中,scanf函数里用了%p,实现从屏幕直接输入一个16进制的数,这样编译会有一个警告,因为和我定义的数据类型不同,可是依然能够运行,我认为程序运行时,内部数据可以自己转换过来的。如果我用%d,输入10进制的数就不会有这样的问题。

  • 相关阅读:
    HTML5 浏览器返回按钮/手机返回按钮事件监听
    Asp.Net Core获取请求信息/获取请求地址
    Asp.Net 获取物理路径
    .Net AppDomain详解(二)
    .Net AppDomain详解(一)
    asp.net core部署到iis中出现 HTTP Error 502.5
    Asp.Net Core 静态文件目录操作
    Asp.Net Core Web相对路径、绝对路径整理
    .Net Core Bitmap位图处理
    ngRx 官方示例分析
  • 原文地址:https://www.cnblogs.com/tymjava/p/4895342.html
Copyright © 2011-2022 走看看