zoukankan      html  css  js  c++  java
  • 20165230 ch02 课上测试

    题目一

    • 1.参考附图代码,编写一个程序 “week0201学号.c",判断一下你的电脑是大端还是小端。
    • 2.提交运行结果”学号XXXX的笔记本电脑是X端“的运行截图,要全屏,包含自己的学号信息
    • 3.把代码推送到代码托管平台**

    相关知识点

    • 大端字节序 : 高字节序存于内存的低地址;低字节序存于内存的高地址。

    • 小端字节序 : 高字节序存于内存的高地址;低字节序存于内存的低地址。

    • 代码

    #include <stdio.h>
    
    typedef unsigned char *byte_pointer;
    
    void show_bytes(byte_pointer start, size_t len) {
        size_t i;
        for(i=0; i<len; i++)
            printf(" %.2x", start[i]);
        printf("
    ");
    }
    
    void show_int(int x) {
        show_bytes((byte_pointer) &x, sizeof(int)); 
    }
    
    void show_float(float x) {
        show_bytes((byte_pointer) &x, sizeof(float));
    }
    
    void show_pointer(void  *x) {
        show_bytes((byte_pointer) &x, sizeof(void *));
    }
    
    void test_show_bytes(int val) {
        int ival=val;
        float fval=(float)ival;
        int *pval=&ival;
        show_int(ival);
        show_float(fval);
        show_pointer(pval);
        int num = 1;
        if (ival&num == 1)
            printf("学号20165230的笔记本电脑是小端
    ");
        else
            printf("学号20165230的笔记本电脑是大端
    ");
    
    }
    
    void main() {
        int val;
        scanf("%d", &val);
        test_show_bytes(val);
    }
    

    运行结果

    题目二

    1. 调用附图代码,编写一个程序 “week0202学号.c",用show_int(), show_float()打印一下你的4位学号,参考教材P33打印出匹配的位序列。

    2. 提交运行结果截图,要全屏,要包含自己的学号信息

    3. 课下把代码推送到代码托管平台*

    4. 参考教材p82,给出出匹配的位序列的推导过程

    相关知识点

    • 输出位序列。(代码如下)
    int i, j;
    for(i=0; i<11; i++)
        printf(" ");
    for(i=0; i<len; i++){
        for(j=0; j<8; j++){
            printf("%d", (start[i]>>j) & 0x1);
        }
    }
    printf("
    ");
    
    • IEEE浮点表示

    • 代码

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef unsigned char *byte_pointer;
    
    void show_bytes(byte_pointer start, size_t len) {
        size_t i;
        for(i=0; i<len; i++)
            printf(" %.2x", start[i]);
        printf("
    ");
    }
    
    void show_int(int x) {
        size_t len=sizeof(int);
        show_bytes((byte_pointer) &x, len);
        byte_pointer start=(byte_pointer) &x;
        int i, j;
        for(i=0; i<11; i++)
            printf(" ");
        for(i=0; i<len; i++){
            for(j=0; j<8; j++){
                printf("%d", (start[i]>>j) & 0x1);
            }
        }
        printf("
    ");
    }
    
    void show_float(float x) {
        size_t len=sizeof(float);
        show_bytes((byte_pointer) &x, len);
        byte_pointer start=(byte_pointer) &x;
        int i, j;
        for(i=0; i<len; i++){
            for(j=0; j<8; j++){
                printf("%d", (start[i]>>j) & 0x1);
            }
        }
        printf("
    ");
    }
    
    void show_pointer(void  *x) {
        show_bytes((byte_pointer) &x, sizeof(void *));
    }
    
    void test_show_bytes(int val) {
        int ival=val;
    float fval=(float)ival;
        int *pval=&ival;
        show_int(ival);
        int i;
        for(i=0;i<11;i++){
            printf(" ");
        }
        for(i=0;i<13;i++)
            printf("*");
        printf("
    ");
        show_float(fval);
    }
    
    void main() {
        int val;
        scanf("%d", &val);
        test_show_bytes(val);
    }
    

    运行结果

    第三题

    • 由于前两题花的时间过多,导致第三题没有时间完成,在此将第三题补充完成。
    1. 编写一个程序 “week0203学号.c",运行下面代码:
       short int v = -学号后四位
       unsigned short uv = (unsigned short) v
       printf("v = %d,  uv = %u
     ", v, uv);
    
    1. 在第三行设置断点用gdb调试,用p /x v; p /x uv 查看变量的值,提交调试结果截图,要全屏,要包含自己的学号信息

    2. 分析p /x v; p /x uv 与程序运行结果的不同和联系

    代码

    #include<stdio.h>  
    void main()
    {
      short int v = -5230;    
      unsigned short uv = (unsigned short) v;     
      printf("v = %d,  uv = %u
     ", v, uv); 
    }
    

    调试结果

    分析

    数值可能会改变,但是位模式不变

    总结

  • 相关阅读:
    如何将一个类改造为线程安全
    50行代码实现缓存,JAVA内存模型原理
    Qt 解压/压缩文件
    QT学习笔记—1
    在http编程的门口飞牛网自动下单,查单
    QList 排序
    Qt 打开指定的文件
    spoj 375 query on a tree 题解
    uva 11388 GCD LCM题解
    uva 1476 Error Curves 题解
  • 原文地址:https://www.cnblogs.com/tiankunye/p/9800433.html
Copyright © 2011-2022 走看看