@hsj1234
2016-07-14T12:17:09.000000Z
字数 1292
阅读 869
进制
实现进制之间的转换
- 实现各种进制之间的转换
- 输出结果有字节数要求(即位数不够时,需要在高位补0)
- 判断输入是否超过要求字节数所能表示的范围
按权相加法(m进制转换为十进制)
m进制数从低位到高位(即从右往左)计算,第0位的权值是m的0次方,第1位的权值是m的1次方,第2位的权值是m的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。
公式如下:
分别表示m进制的第位的数值
分别表示m进制对应于第位的权值
表示转换结果(十进制)除数取余法(十进制转换为m进制)
对于整数部分,用被除数反复除以m,除第一次外,每次除以m均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。
对于小数部分,采用连续乘以基数m,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”。
string trans(string input,int bytes)
input
代表输入的十进制数字
bytes
代表需要输出的字节数要求
该函数返回的是要求字节数的十六进制
string trans(string input,int bytes)
{
int input_temp=stoi(input);
int m=2*bytes;//位数
int max=1<<8*bytes;//能表示的最大数值
if (input_temp<0||input_temp>=max)return "error_data";//判断input是否符合要求
string output=string(m--,'0');
//主要用到除16取余法
while(input_temp){
output[m--]=tab[input_temp%16];
input_temp/=16;
}
return output;
}
尚待改进 | 意见 |
---|---|
基础知识内容中 文字过多堆砌,影响阅读 语言不够简练明了 代码不够精炼 整体逻辑,效果不够理想 流程图效果不佳 |
常看专业文档-->加强整体排版,规范用词用图(最好是图文交叉进行.文少图多) 看hihocoder的提示-->学会用伪代码写 看逻辑方面的书籍-->了解和增强逻辑结构 用专业的图形编辑器-->暂时用ProcessOn |