整数转字符串-递归

整数转化成字符串,可以采用加'0'的方法,在ASCII码表中,'0'对应48,0~9对应48~57,字符串转整数,则减去‘0’。

#include <iostream>
using namespace std;

void uitoch(char *temp, long n)
{
if(!n) return;
*temp = n % 10 + '0';
uitoch(
--temp,n/10);
}

void main()
{
long s,m,m1;
int l = 0;
bool flag(true);
cout
<< "please input a data:" << endl;
cin
>> s;
m
= s;
if(m < 0)
{
m
= (unsigned int)(long)(-m);
flag
= false;
}
m1
= m;
while(m/10) //不能是m%10,可能是整除的情况
{
m
= m/10;
l
++;
}

char *tempt = new char[l+3]; //默认为0~l+2,因为要加符号和结束位,而上面的while计算得到的l少一位
// char *tempt = (char*)malloc((l+1)*sizeof(char));

uitoch(tempt
+l+1,m1);
tempt[l
+2] = '\0'; //一定要加上,否则输入会出现异常
if(!flag)
{
tempt[
0] = '-';
cout
<< tempt << endl;
}
else cout << tempt+1 <<endl;
delete [] tempt;
}

int为4位,32bit,第一位为符号位,表示范围-2147483648~2147483647,注意是用补码表示的范围,补码因为具有一些优势:

1.0表示的唯一性,0的补码表示为32个0,认为是正的。-2147483648的补码表示为0x80000000,注意这个表示是人为规定的。

2.符号位可以作为运算位参与运算,运算结果在mod2^(n+1)的意义下世相等的。

3.硬件电路设计的大量简便(主要原因)。

0x  十六进制   0x800000000

0   八进制      04000000000000

直接写为十进制

posted @ 2011-06-25 21:45  圆规&直尺  阅读(437)  评论(0)    收藏  举报