去年因为自身心理原因回家修养.家里比深圳冷许多,所以一直都在运动锻炼身体,荒废了自己的学习.
现在天气暖和了,要天天向上了.下面是自己写的一些小例子,也可以说是作<CSAPP>的一些作业所随便写的一些东西.
1.自定义的define.h的头文件的部分内容
#include <stdio.h>
#include <limits.h>
#include <stdint.h>
#include <stdlib.h>
#define BITS_LENGTH_OF_BYTE 8u
// 检测乘法是否溢出-1
int tmul_ok(int x, int y)
{
int result = x * y;
return !x || result / x == y;
}
// 检测乘法是否溢出-2
int tmul_ok_1(int x, int y)
{
int64_t result = x * y;
return !x || !y || !(result & INT_MAX);
}
int div16(int x)
{
int bias = (x >> 31) & 0xf;
return (x + bias) >> 4;
}
// 判断小端字节序
int little_endian_ok()
{
unsigned i = 1;
unsigned char *pi = (unsigned char *)&i;
return *pi & 1;
}
/* 输出指定基本数据类型的-位模式;
针对小端字节序的系统,从符合人类书写习惯的高位开始输出 */
void show_bits(const char *start_addr, unsigned byte_length)
{
unsigned char mask_no = 1U;
for (unsigned i = byte_length; i > 0; i--)
{
unsigned blob_var = BITS_LENGTH_OF_BYTE; // blob => bits length of byte
unsigned char c = *(start_addr + i - 1);
for (; blob_var > 0; blob_var--)
{
printf("%u ", (c >> (blob_var - 1)) & mask_no);
}
}
printf("\n");
}
2.判断自己系统是否是小端字节序
显示是1就说明是小端字节序的系统
#include <stdio.h>
#include "define.h"
int main()
{
printf("小端字节序:%d\n", little_endian_ok());
return 0;
}
3.根据输入的数字输出-位模式
简单实现的小东西,所以目前只支持32位和64位的整形数字,感兴趣的同学请自行拓展,拓展好了请发个留言共同进步.
#include <stdio.h>
#include "define.h"
int main(int arg_l, char *args[])
{
if (arg_l < 2)
{
printf("参数输入错误");
return 0;
}
// int byte_length = *((int *)args[2]);
int byte_length = atoi(args[2]);
const char *start_addr;
if (byte_length == 4) {
int i = atoi(args[1]);
start_addr = (char *)&i;
}
else {
long l = atol(args[1]);
start_addr = (char *)&l;
}
show_bits(start_addr, byte_length);
return 0;
}
分享到:
相关推荐
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <ctype.h> #include <setjmp.h> #include <signal.h> #include <sys/time.h> #include <sys/types.h> #include <sys/...
哈工大-19-CSAPP大作业.doc
CSAPP深入理解计算机系统各章节的题库,附答案。比较适合一些同学复习刷题用
hit2018年csapp大作业,程序人生 hello的一生,根据一个简单的程序hello来探究程序运行过程
csapp共享给大家一起
hit csapp 大作业
深入理解计算机系统(第二版)家庭作业答案.doc
<<深入理解计算机系统>>中的头文件csapp.h及csapp.c
CSAPP HIT 大作业 HelloP2P
哈工大CSAPP大作业
不周山之读薄 CSAPP
CSAPP大作业 程序人生
HIT2022CSAPP大作业
哈工大CSAPP期末考试题目.docx哈工大CSAPP期末考试题目.docx哈工大CSAPP期末考试题目.docx哈工大CSAPP期末考试题目.docx哈工大CSAPP期末考试题目.docx哈工大CSAPP期末考试题目.docx哈工大CSAPP期末考试题目.docx哈...
《深入理解计算机系统》(修订版)习题答案,CSAPP习题答案,Computer.Systems.A.Programmer's.Perspective习题答案
哈尔滨工业大学csapp大作业
hit2022秋csapp大作业