嵌入式笔试刷题第(25天)

第1题:按位翻转一个 unsigned char 数值

写一个函数,把 unsigned char num 的位进行整体翻转,不使用额外变量。

示例:

输入:num = 0b10010111  
输出:num = 0b11101001

解法(最优):使用位运算 + 掩码 + 位移

unsigned char reverseBits(unsigned char num) {
    num = (num & 0xF0) >> 4 | (num & 0x0F) << 4;
    num = (num & 0xCC) >> 2 | (num & 0x33) << 2;
    num = (num & 0xAA) >> 1 | (num & 0x55) << 1;
    return num;
}

解析:逐层交换半字节、2位、1位,利用位运算达到最优翻转,不使用额外变量

第2题:判断字符串中括号是否匹配(非递归)

输入示例:({})[] → 匹配

解法:使用栈结构

#include <stdio.h>
#include <string.h>

int isValid(char *str) {
    char stack[100];
    int top = -1;

    for (int i = 0; str[i]; i++) {
        char c = str[i];
        if (c == '(' || c == '{' || c == '[')
            stack[++top] = c;
        else if (c == ')' && top >= 0 && stack[top] == '(')
            top--;
        else if (c == '}' && top >= 0 && stack[top] == '{')
            top--;
        else if (c == ']' && top >= 0 && stack[top] == '[')
            top--;
        else
            return 0;
    }
    return top == -1;
}

第3题:实现循环缓冲区的 Write 函数

结构定义:

typedef struct RingBuf {
    char *Buf;
    unsigned int Size;
    unsigned int RId;
    unsigned int WId;
} RingBuf;

解法:

void Write(RingBuf *ringBuf, char ch) {
    ringBuf->Buf[ringBuf->WId] = ch;
    ringBuf->WId 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式笔试专栏 文章被收录于专栏

本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。

全部评论
点赞 回复 分享
发布于 04-25 21:44 山西
mark一下解法
点赞 回复 分享
发布于 04-25 17:30 黑龙江

相关推荐

05-05 17:12
已编辑
门头沟学院 Java
自从我了解程序员这个职业后,一直有人说35岁危机,我从互联网上各种渠道了解到的信息,35岁危机是确实存在的。以我的个人理解,它不是指35岁一定会失业,而是指在就业市场上竞争力远不如别人,一方面年龄太大,一方面要求的薪资过高,导致很难找到满足自己期待的工作。作为26届求职大军中的一员,一直在去大厂和去国企中反复横跳。一开始的时候,对大厂有滤镜,铆足了劲想去大厂,后面看到大厂各种负面消息,裁员、裁应届生、猝死等等,这时候觉得大厂可能并没有我想象的那么光鲜亮丽。然后就去了解国企对应的岗位,根据我了解到的信息,国企晋升比较困难,有些国企工作强度比肩大厂,但是薪资不如大厂,包括这两年开始末位淘汰等等,又让我陷入了纠结。期间也了解到一些前辈的看法,和师兄们也聊了聊这个话题。有些前辈打算先在大厂卷,攒足够多的钱,遇到35危机直接退休,有些前辈打算先在大厂干几年然后去别的赛道,比如说考公考编,社招进国企,从事自媒体行业,出国等等,有些前辈直接进国企。我也是个比较内耗的人,一直在思考进大厂还是进国企。有时候感觉自己很能折腾,去大厂磨炼磨炼也挺好的,有时候又感觉这么累没有必要,不如直接进国企躺平。既想要大厂的薪资,又想要国企的稳定。想了解一下大家对35岁危机的看法,欢迎大家发表意见,和我交流一下。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
炬火初现:你先干互联网呗,先把钱好好攒着,然后平时抽时间额外学习其他东西,说实话我觉得现在ai的发展,还有科技的发展,不一定是你先35退休还是工作提前被ai或者啥取代。但是如果你有足够的钱和中大厂的工作履历,你就算辞了,靠着钱也可以苟一段时间,如果你正好在未来几年发现新的想法,到时候有钱有闲,说不定人生第二春就开始了。所以我的看法就是既然来了,就先把互联网干好,然后多攒钱,多学习,给自己和家人上好医疗保险啥的,屈身守分,静待天时。
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务