0x来表示十六进制,逢16进1.(1)0x033*16^03(2)0x03000*16^00*16^13*16^2=256*3=768
方法一:再在用控制字符串%o八进制%x
方法二:
求余来算,诸如求十进制数x(n5d100)的8进制,先通过x%8可以能够得到个位(末位)上的数,当十进制数=8时,必然会会进位,求余的结果正好是不能进位的部分,xx/8(这就像位移方向,x的8进制数往左移了一位),这样早就求出的个位位移距离后没有了,原来的十位都变成了个位,继续把能得到的x按上面的求末位,就能求出十位,明确的这种能够得到的8进制数是反的(先我得到个位,再个位。。。),那样的话很适合我放栈中,取得时候又会相反,伪代码这个可以这样写:
while(x){
printf(#34%d#34,x%n)//会可以打印出x转换为n进制数从低位到高位上的每一位数
x/n
}
十进制转换成n进制:
#includeltstdio.hgt
#includeltstdlib.hgt
#includeltstring.hgt
typedefintint
typedefstructdd
{
intdata
structdd*next
}lnode,*lstack
lstackpushstack(lstacktop,intx)
{
lstackp
p(lstack)malloc(sizeof(lnode))
if((x)!-1){p-gtdata(x)p-gtnexttoptopp}
returnstar
}
lstackoutstack(lstacktop,int*x)
{
lstackptop
*xp-gtdata
topp-gtnext
fun(p)
returnstar
}
main()
{
intx,n
lstacktopnull
printf(#34请输入原数及要转换的的进制:#34)
'{
scanf(#34%d%d#34,ampx,ampn)//键入一个十进制数和要转换的进制,.例如32能得到1}while(dqi35||xlt0||nlt2)
while(x){//这个循环把每一位放到栈中
toppushstack(top,x%n)
x/n
while(top!null)
{
topoutstack(top,ampx)
if(xlt10)
printf(#34%c#34,x#390#39)
else
printf(#34%c#34,x#39a#39-10)
}
return0}