C 将12位转换为十进制
我想用C语言将12位转换成十进制数 例如,如果我们有: A1=0x5D A2=0xA0(A2中的LSB位始终为0) 因此,如果我们把这些放在一起,我们有: 0x5DA,等于1498C 将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中执行此操作吗?您可以在
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);