2018-2019-1 20165324 《信息安全系统设计基础》第三周课堂练习

2018-2019-1 20165324 《信息安全系统设计基础》第三周课堂练习

任务一
  1. 调用附图代码,编写一个程序“week0202学号.c",用show_int(),show_float()打印一下你的4位学号,参考教材P33打印出匹配的位序列。
  2. 提交运行结果截图,要全屏,要包含自己的学号信息
  3. 课下把代码推送到代码托管平台
  4. 参考教材p82,给出出匹配的位序列的推导过程
  5. 代码及截图如下:
#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("\n");
}
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)val;
    int  *pval = &ival;
    show_int(ival);
    show_float(fval);
    show_pointer(pval);
}
main()
{
char c=0x12345678;
show_int(c);
if(c==0x12)
printf("20155337是大端\n");
else
printf("20155337是小端\n");

1290756-20181013221137473-1419760524.png

实践二
  1. 调用附图代码,编写一个程序 “week0602学号.c",用show_int(), show_float()打印一下你的4位学号,参考教材P33打印出匹配的位序列。
  2. 提交运行结果截图,要全屏,要包含自己的学号信息
  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("\n");
}
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)val;
    int  *pval = &ival;
    show_int(ival);
    show_float(fval);
    show_pointer(pval);
}
int main()
{
    int x=5337;
    test_show_bytes(x);
}

1290756-20181013221151542-1757267961.png

任务三
  1. 编写一个程序 “week0203学号.c",运行下面代码:
1   short int v = -学号后四位
2   unsigned short uv = (unsigned short) v
3  printf("v = %d,  uv = %u\n ", v, uv);
  1. 在第三行设置断点用gdb调试,用p /x v; p /x uv 查看变量的值,提交调试结果截图,要全屏,要包含自己的学号信息

  2. 分析p /x v; p /x uv 与程序运行结果的不同和联系
  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("\n");
}
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 main()
{
short int v = -学号后四位

unsigned short uv = (unsigned short) v

printf("v = %d, uv = %u\n ", v, uv);
}

转载于:https://www.cnblogs.com/20165324hcj/p/9771537.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值