You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中如何将两个8位整数拼接合并为一个16位整数

C语言两个整数二进制拼接实现方案

实现逻辑

你需要的是将b的二进制序列作为高位、a的二进制序列作为低位拼接,核心步骤如下:

  • 计算低位整数(示例中为a)的二进制有效位数
  • 将高位整数(示例中为b)左移上述计算得到的位数,空出低位的存储空间
  • 将左移后的b与a做按位或运算(也可直接相加,左移后低位全为0,无进位冲突),得到最终拼接结果

完整代码示例

#include <stdio.h>

// 计算整数二进制有效位数的工具函数
int get_bit_length(int num) {
    if (num == 0) {
        return 1; // 0的二进制默认占1位
    }
    int len = 0;
    while (num > 0) {
        len++;
        num >>= 1;
    }
    return len;
}

int main() {
    int a = 8; // 二进制为1000,有效位4位
    int b = 6; // 二进制为0110,有效位4位
    
    int a_bit_len = get_bit_length(a);
    int merged = (b << a_bit_len) | a;
    
    printf("拼接后十进制结果:%d\n", merged);
    printf("拼接后十六进制结果:%#x\n", merged);
    return 0;
}

运行结果说明

上述代码运行后输出的结果为104,对应二进制01101000,完全符合你的需求。

注意事项

  • 若要调整拼接顺序,例如将a放在高位、b放在低位,只需计算b的二进制位数,将a左移对应位数后再和b做按位或即可
  • 需注意溢出风险:拼接后的结果不能超过所用整型的取值上限,32位int的最大值为2^31-1,如果拼接后总位数超过31位,建议改用long long类型存储结果
  • 如果有固定位数补前导零的需求,例如要求b不管数值大小都固定占4位,无需动态计算位数,直接左移固定位数即可,比如示例需求可直接写merged = b << 4 | a,逻辑更简单

内容的提问来源于stack exchange,提问作者user17027168

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:27:03