![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 67
梦中_破
这个作者很懒,什么都没留下…
展开
-
机器学习-fp16相乘
fp16乘法实现原创 2022-05-03 12:03:41 · 1634 阅读 · 0 评论 -
机器学习-fp16表示
公式引入存储方式:1位符号位+5位指数位+10位尾数位,共16位,内存占2个字节sign:符号位exponent:指数位(阶码)fraction:小数位(尾数)阶码常用补码或移码表示尾数常用原码或补码表示fp16表示为:(1.0+fraction)中的1规格化值:小数点前只有1位数,且非0例:3.1415 * 10^2, 0.31415 * 10 ^ 3, 31.415 * 10^(-1)都表示314.15,其中3.1415 * 10^2被称为规格化值,后两者为非规格化值。对原创 2022-04-30 21:50:17 · 10802 阅读 · 1 评论 -
机器学习-fp16相加
1位符号位+5位指数位+10位尾数位,共16位,内存占2个字节,single表示方式为(-1)^s * 2 ^(e - 15) * 1.f运算步骤检查操作数中是否有0、Inf、NaN存在NaN,直接返回NaN一个操作数为0,直接返回另一个操作数一个操作数为Inf,另一个操作数也为Inf,且两个符号相同,返回第一个操作数一个操作数为Inf,另一个操作数也为Inf,且两个符号不同,返回NaN一个操作数为Inf,另一个操作数非NaN,非Inf,返回Inf对阶若两操作数阶码不相等,则原创 2022-03-27 20:37:36 · 2606 阅读 · 3 评论 -
机器学习-int转fp16
机器学习-int转fp16原创 2022-03-18 20:34:40 · 1895 阅读 · 0 评论 -
C语言-堆排序
堆、大根堆、小根堆n个元素的序列{k0,k1,…,k(n-1)}且当满足以下条件时:则称为堆,前者称为大根堆、后者称为小根堆。若将和此序列按顺序(相对链式)方式存储(如:一维数组),则可看成是一个完全二叉树(概念可以回顾:)。而堆实质是满足以下性质的二叉树:书中所有非叶子结点的值均大于等于(或小于等于)其左、右孩子结点的值。如序列(96,83,27,38,11,09)和{12,36,24,85,47,30,53,91},分别满足条件(1)和条件(2),它们均为堆。对应完全二叉树图为堆排序原理原创 2022-02-11 16:53:46 · 1383 阅读 · 0 评论 -
C语言-二叉树
二叉树在书中最为常用,一下记录二叉树的存储结构及操作和应用。二叉树特点仅有一个根结点(非空)每个结点最多两个子结点,左节点和右节点,左右次序不能颠倒满二叉树定义深度为k,含有个结点(除最后一层外每个结点外每个节结点都有左右子结点), 每一层的结点数都为完全二叉树定义对当前二叉树的根结点开始,从上到下,从左到右进行编号,如果编号都和满二叉树一一对应,则为完全二叉树,如下图二叉树存储结构1.顺序存储结构对于满二叉树和完全二叉树,从根结点开始,从上到下从左到右存储结点元原创 2022-02-07 16:49:47 · 1549 阅读 · 0 评论 -
C语言-顺序栈实现
栈的定义栈:时限定只在表尾进行插入或删除的线性表。所以栈也成为后进先出的线性表表头为栈底,表尾为栈顶,不含元素的空表为空栈顺序栈的实现顺序栈是指利用顺序存储结构实现的栈,即 利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时利用数组下标top指示栈顶元素在顺序栈中的位置。因为C语言中数组下标从0开始,这里以top = -1表示空栈。顺序栈的数据结构:#define maxStackNum 100typedef struct{ int* data; //栈元素指针 int to原创 2021-11-14 22:43:00 · 1195 阅读 · 0 评论 -
C语言-用队列实现栈
栈:是先进后出的数据结构队列:是先进先出的数据结构用一个队列实现栈主要目的是:保证队首的元素和栈顶相同当队列为空时,直接入队;当队列不为空时,将该元素入队之后,将该元素之前的所有元素依次出队再入队。这样栈顶元素对应队首,栈底元素对应队尾,弹出时,按顺序弹出。...原创 2021-11-14 22:05:50 · 1206 阅读 · 0 评论 -
C语言-用栈实现队列
用栈实现队列栈是先进后出的数据结构,队列是先进先出的数据结构,所以当往队列中插入数据时,可以直接入栈。只是队列中先插入的在队首,队列中先插入的在栈底。弹出队首的数据,实际就是删掉栈底的数据,直接删除不了,可以利用另一个辅助栈,将当前栈中数据全部依次弹出,并push到辅助栈中,这时当前栈的栈底元素就变成了辅助栈的栈顶元素,直接pop掉辅助栈的栈顶元素就行。队列从队首到队尾的元素始终是辅助栈栈顶到栈尾+当前栈栈底到栈尾。辅助栈栈顶对应着队列队首,这就说明当辅助栈不为空时,队列的pop,可以直接对辅助栈p原创 2021-11-13 19:29:39 · 2349 阅读 · 0 评论 -
C语言-排序
void quickSort(int* candyType, int begin, int end){int tmp = candyType[begin];int left = begin;int right = end;if (right <= left) return;while(left < right){ while((left < right) && (candyType[right] >= tmp)) right--原创 2021-09-09 11:08:39 · 414 阅读 · 0 评论 -
单精度、半精度之间的转换,及半精度加法实现
单精度浮点存储方式1位符号位s+8位指数位e+23位尾数位f,共32位,内存占4个字节,表示方式为(-1)^s * 2 ^(e - 127) * 1.f,半精度浮点存储方式1位符号位+8位指数位+23位尾数位,共16位,内存占2个字节单精度表示范围更大,精度更高,能精确到小数点后6位,半精度能精确到小数点后两位,半精度是牺牲精度提高计算速度,一般用于人工智能等对运算速度比较高的场景。单精度转换为半精度将浮点数转换为4字节16进制,依次获取f32符号位,f32指数位,f32尾数位符号位符原创 2020-12-15 17:22:33 · 6337 阅读 · 3 评论 -
'.'和'->'使用过程中的注意事项
这里写自定义目录标题'.'和'->'使用过程中的注意事项'.‘和’->'使用过程中的注意事项List_t* pxList;ListItem_t * pxIterator;pxIterator->pxNext->pxPrevious = pxNewListItem; //没错pxIterator = pxList->xListEnd->pxPrevi...原创 2019-11-09 09:47:12 · 251 阅读 · 0 评论 -
strstr造成的非对齐访问错误
extern char *strstr(char *str1, const char *str2);大家都知道函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。具体用法这里就不多说,网上资源很多。char *buf_check = NULL;buf_check = strstr((const char*)gprs...原创 2018-02-02 19:25:02 · 1157 阅读 · 0 评论 -
strstr(str1,str2)的地址空间问题
strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULLchar*m_Read_Buffer = "start = //http:www.baidu.com23333";char* p = NULL;char* q = NULL;p = strstr(m_Read_Buffer,...原创 2018-03-19 19:06:43 · 686 阅读 · 0 评论 -
sscanf()高级用法
sscanf(recvbuf,"%*[^/]/%[^ ]s",buf_rev);sscanf(buf, "GET /%[^ ]", buf_rev);这个是在一个webserver.c里面的例子,通过sscanf()语句可以找到和它前面相匹配的语句然后打印出后面需要的东西,下面说下%[]:其基本格式为 %[set],表示将接收一个由set指定格式的字符串,其中set表示可接受的...转载 2018-03-21 12:09:13 · 699 阅读 · 0 评论