c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...
一個(gè)簡(jiǎn)單的問(wèn)題:像這樣的16進(jìn)制數(shù)如何轉(zhuǎn)換得到?
本帖最后由 alibaren 于 2014-11-25 01:15:15 編輯
下列3個(gè)整數(shù)(用16進(jìn)制表示)?如何通過(guò)某種運(yùn)算一次性得到右邊的數(shù):
0X1212BE72???====>0X212BE72*10
0X2312BE8D???====>0X312BE8D*100
0X3511DDEC??====>0X511DDEC*1000
.................????????????????????????????....................
也就是前面的一個(gè)數(shù)字N去掉,剩下的組成一個(gè)新數(shù)乘以10的N次方。
另:求出的數(shù)值會(huì)變很大?為了防止溢出請(qǐng)問(wèn)用什么數(shù)據(jù)類型存儲(chǔ)呢
------解決思路----------------------
移位啊
#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
總結(jié)
以上是生活随笔為你收集整理的c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux 查看显存带宽,Vega 20
- 下一篇: c语言单链表数据显示,C++_C语言单链