C 将12位转换为十进制

C 将12位转换为十进制,c,C,我想用C语言将12位转换成十进制数 例如,如果我们有: A1=0x5D A2=0xA0(A2中的LSB位始终为0) 因此,如果我们把这些放在一起,我们有: 0x5DA,等于1498 您能告诉我如何在C中执行此操作吗?您可以在C中相对轻松地执行此操作: val = ((A1 << 8) + A2) >> 4; val=((A1>4; 您只需将两个数字串联起来,然后删除始终为零的最后4位。A1需要向左移动4位,以便为A2的位腾出空间,这可以通过A1>4完成 然后这两个部分

我想用C语言将12位转换成十进制数

例如,如果我们有:

A1=0x5D A2=0xA0(A2中的LSB位始终为0)

因此,如果我们把这些放在一起,我们有:

0x5DA,等于1498


您能告诉我如何在C中执行此操作吗?

您可以在
C中相对轻松地执行此操作:

val = ((A1 << 8) + A2) >> 4;
val=((A1>4;

您只需将两个数字串联起来,然后删除始终为零的最后4位。

A1需要向左移动4位,以便为A2的位腾出空间,这可以通过
A1>4
完成

然后这两个部分可以与
|
运算符组合:

(A1 << 4) | (A2 >> 4);
(A1>4);

这取决于将其转换为十进制数的定义

当你这么做的时候

int A1 = 0x5D;
int A2 = 0xA0;
int B  = (A1 << 4) | (A2 >> 4); // (*)

语句
intb=(A1>4);
可以解释如下:

  • 为右移,位将移出,零将填满

  • X我想应该是
    A1注:如果平台使用16位
    int
    并且
    A1
    是某种有符号类型,那么
    >4
    可能会复制符号位。
    printf("%d", B);