整数转字符串-递归
整数转化成字符串,可以采用加'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
直接写为十进制