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(); // 获取系统时间并设置TIMEreturn 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(); // 获取系统时间并设置TIMEprintf("当前时间:\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(); // 获取系统时间并设置TIMEprintf("当前时间:\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