C语言如何实现十六进制转换成十进制

2020-07-07 09:29
C实现十六进制转5261换成十进制如下:4102 例如六进制数字 9FA8C 转换成十进制: 9FA8C=9×1653164 + 15×163 + 10×162 + 8×161 + 12×160=653964(十进制 从右往左看,第1位的位权为 160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… 第n位的位权就为 16n-1。 将各个位的数字乘以位权,然后再相加,就得到了十进制形式。 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方。 所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。 再例如:十六进制:EA7=14×162 + 10×161 + 7×160=3751(十进制)。 扩展资料: C语言10进制转16进制 把十进制的数不停除以16的余数按从右到左的顺序排起来就是16进制,例如:55/16=0余5例如100 100/16=6余4 6/16余6,所以就是64,再例如1000 1000/16=62余8 62/16=3余12 3/16余3所以结果是3C8 //。 对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。 对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止。 参考资料来源:百度百科-十六进制至十进制转换-十六进制--->十进制 可以用 中的char*_itoa(intvalue,char*string,intradix);把整换为其他进制的字符考代码: int main(){int a=110;char p;_itoa(110,p,16); //16表16进制,还可以用2、8、10printf("%s",p);return 0;} GCC,GNU组织开发的开源免费译器,MinGW,Windows操作系统下的GCC,Clang,开源的BSD协议的基于LLVM的编译器。 扩展资料: 运算符号: 比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移。例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。 运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。 参考资料来源:百度百科-c语言 一个2113进制数5261。存入数ch 然 int i; int n; n=0; for (i=0; ch[i] !='\0'; i++) { if (ch[i] >='0' && ch[i] <='9') n=n * 16 + ch[i] - '0'; if (ch[i] >='a' && ch[i] <='f') n=n * 16 + ch[i] - 'a' + 10; if (ch[i] >='A' && ch[i] <='F') n=n * 16 + ch[i] - 'A' + 10; } 则,4102n就1653换后的。 #include #define initsize 20 #define increment 10 typedef char elemtype; typedef struct stack{ elemtype *base; elemtype *top; int stacksize; }stack; void initstack(stack &s)//初栈 {s.base=(elemtype *)malloc(initsize*sizeof(elemtype)); if(s.base) exit(0); s.stacksize=initsize; s.top=s.base;} void push(stack &s,elemtype e)//入栈,栈满则追加栈空间 {if(s.top-s.base>=initsize) s.base=(elemtype *)realloc(s.base,(s.stacksize+increment)*sizeof(elemtype)); if(!s.base) exit(0); s.stacksize+=increment; *s.top=e; s.top++; } void pop(stack &s,elemtype &e)//出栈 {if(s.base==s.top) printf("有错误"); else e=*--s.top; } int empty(stack &s)//判栈空 {if(s.base==s.top) return 1; else return 0; } void clear(stack &s) {if(s.base==s.top) return ; s.base=s.top; } void conversion(int n,int N)//转换 {int c; char e; stack s; initstack(s); while(n!=0) {c=n%N; n=n/N; if(c
分享到:
收藏
相关阅读