c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...
一個簡單的問題:像這樣的16進制數如何轉換得到?
本帖最后由 alibaren 于 2014-11-25 01:15:15 編輯
下列3個整數(用16進制表示)?如何通過某種運算一次性得到右邊的數:
0X1212BE72???====>0X212BE72*10
0X2312BE8D???====>0X312BE8D*100
0X3511DDEC??====>0X511DDEC*1000
.................????????????????????????????....................
也就是前面的一個數字N去掉,剩下的組成一個新數乘以10的N次方。
另:求出的數值會變很大?為了防止溢出請問用什么數據類型存儲呢
------解決思路----------------------
移位啊
#include?
unsigned?int
conv(unsigned?int?x)
{
unsigned?int?i,?a,?m,?n;
a?=?x?&?0x0FFFFFFF;
n?=?x?>>?28;
m?=?1;
for?(i?=?0;?i?
{
m?=?m?*?10;
}
printf("0X%08X===>0X%08X*%u\n",?x,?a,?m);
return?(a?*?m);
}
int
main(int?argc,?char?*argv[])
{
unsigned?int?x;
x?=?0X1212BE72;
conv(x);
x?=?0X2312BE8D;
conv(x);
x?=?0X3511DDEC;;
conv(x);
return?0;
}
------解決思路----------------------
unsigned?int?a?=?0X1212BE72;
unsigned?int?b?=?(?a?&?0xF0000000?)?>>?7;
int?c?[100];
memset(?c,?0,?sizeof(c)?);
int?i?=?b;
unsigned?int?d?=?a?&?0x0FFFFFFF;
while(?d%10?>?0?)
{
c[b]?=?d%10;
d?=?d/10;
b++;
}
for(?int?i=b-1;?i>0;?i--?)
printf(?"%d",?c[i]?);
------解決思路----------------------
__int64
總結
以上是生活随笔為你收集整理的c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 查看显存带宽,Vega 20
- 下一篇: C语言烧写C51单片机的线,51单片机烧