20221320—冯泰瑞—课上测试:位运算(AI)

20221320—冯泰瑞—课上测试:位运算(AI)

一、使用位运算编写并调用下面函数 ,把当前时间(使用C库函数获得)设置到 TIME 中,给出代码,使用git记录过程。(12 分)

void setHour(int h) 
void setMinute(int m) 
void setSecond(int s) 

代码:

#include <stdio.h>
#include <time.h>

unsigned short TIME;

// 设置小时
void setHour(int h) {
    TIME = (TIME & 0x1FFF) | (h << 12);
}

// 设置分钟
void setMinute(int m) {
    TIME = (TIME & 0xE0FF) | (m << 8);
}

// 设置秒
void setSecond(int s) {
    TIME = (TIME & 0xFF00) | s;
}

// 获取系统时间并设置TIME
void setCurrentTime(void) {
    struct tm *timeinfo;
    time_t rawtime;

    time(&rawtime);
    timeinfo = localtime(&rawtime);

    setHour(timeinfo->tm_hour);
    setMinute(timeinfo->tm_min);
    setSecond(timeinfo->tm_sec);
}

int main() {
    setCurrentTime(); // 获取系统时间并设置TIME
    return 0;
}

运行结果:

fengtairui@fengtairui-virtual-machine:~$ vim main.c
fengtairui@fengtairui-virtual-machine:~$ gcc -g main.c
fengtairui@fengtairui-virtual-machine:~$ ./a.out

git记录过程:

fengtairui@fengtairui-virtual-machine:~$ git init
提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示:	git config --global init.defaultBranch <名称>
提示:
提示:除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和 'development'。
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示:	git branch -m <name>
已初始化空的 Git 仓库于 /home/fengtairui/.git/
fengtairui@fengtairui-virtual-machine:~$ git add main.c

二、使用位运算编写并调用下面函数 ,读取TIME中的时间,给出代码,使用git记录过程。(12 分)

void setHour(int h) 
void setMinute(int m) 
void setSecond(int s) 

代码:

#include <stdio.h>
#include <time.h>

unsigned short TIME;

// 设置小时
void setHour(int h) {
    TIME = (TIME & 0x1FFF) | (h << 12);
}

// 设置分钟
void setMinute(int m) {
    TIME = (TIME & 0xE0FF) | (m << 8);
}

// 设置秒
void setSecond(int s) {
    TIME = (TIME & 0xFF00) | s;
}

// 读取小时
int getHour(void) {
    return (TIME >> 12) & 0x1F;
}

// 读取分钟
int getMinute(void) {
    return (TIME >> 8) & 0x3F;
}

// 读取秒
int getSecond(void) {
    return TIME & 0xFF;
}

// 获取系统时间并设置TIME
void setCurrentTime(void) {
    struct tm *timeinfo;
    time_t rawtime;

    time(&rawtime);
    timeinfo = localtime(&rawtime);

    setHour(timeinfo->tm_hour);
    setMinute(timeinfo->tm_min);
    setSecond(timeinfo->tm_sec);
}

int main() {
    setCurrentTime(); // 获取系统时间并设置TIME

    printf("当前时间:\n");
    printf("小时: %d\n", getHour());
    printf("分钟: %d\n", getMinute());
    printf("秒: %d\n", getSecond());

    return 0;
}

运行结果:

fengtairui@fengtairui-virtual-machine:~$ vim main.c
fengtairui@fengtairui-virtual-machine:~$ gcc -g main.c
fengtairui@fengtairui-virtual-machine:~$ ./a.out
当前时间:
小时: 10
分钟: 38
秒: 39

三、 完成main.c测试模块,测试你完成的代码,给出代码,编译运行结果,使用 git 记录过程。(5�0�3)

获取系统时间设置TIME

读取你设置的结果

设置minute 为你学号最后两位

读取minute

代码:

#include <stdio.h>
#include <time.h>

unsigned short TIME;

// 设置小时
void setHour(int h) {
    TIME = (TIME & 0x1FFF) | (h << 12);
}

// 设置分钟
void setMinute(int m) {
    TIME = (TIME & 0xE0FF) | (m << 8);
}

// 设置秒
void setSecond(int s) {
    TIME = (TIME & 0xFF00) | s;
}

// 读取小时
int getHour(void) {
    return (TIME >> 12) & 0x1F;
}

// 读取分钟
int getMinute(void) {
    return (TIME >> 8) & 0x3F;
}

// 读取秒
int getSecond(void) {
    return TIME & 0xFF;
}

// 获取系统时间并设置TIME
void setCurrentTime(void) {
    struct tm *timeinfo;
    time_t rawtime;

    time(&rawtime);
    timeinfo = localtime(&rawtime);

    setHour(timeinfo->tm_hour);
    setMinute(timeinfo->tm_min);
    setSecond(timeinfo->tm_sec);
}

int main() {
    setCurrentTime(); // 获取系统时间并设置TIME

    printf("当前时间:\n");
    printf("小时: %d\n", getHour());
    printf("分钟: %d\n", getMinute());
    printf("秒: %d\n", getSecond());

    // 设置分钟为你学号最后两位
    setMinute(20);
    printf("修改后的分钟: %d\n", getMinute());

    return 0;
}

运行结果:

fengtairui@fengtairui-virtual-machine:~$ gcc -g main.c
fengtairui@fengtairui-virtual-machine:~$ ls
公共的  图片  音乐   bestidiocs      main.c         sm2_key.pem  test.txt
模板    文档  桌面   bestidiocs2024  rc4_example    snap
视频    下载  a.out  build           rc4_example.c  test.bin
fengtairui@fengtairui-virtual-machine:~$ ./a.out
当前时间:
小时: 10
分钟: 40
秒: 8
修改后的分钟: 20
posted @ 2025-02-02 20:13  20221320冯泰瑞  阅读(6)  评论(0)    收藏  举报