二进制十进制十六进制
一直没明白十进制 二进制 十六进制到底是什么意思他们之间的转换又是什么意思?
求大佬指教。 本帖最后由 jackz007 于 2021-11-23 19:27 编辑
就是同一个数,多种不同的表达形式而已,比如,十进制数 12 ,写成二进制是 0000 1100,写成八进制是 14,写成十六进制就是 0x0c,其实,它们都是同一个数,十进制数 12。我们通常不用非十进制表达,那是因为我们更加熟悉和习惯于十进制数。 文字解释看着很枯燥,建议去B站浏览相关视频 a327904410 发表于 2021-11-23 19:55
文字解释看着很枯燥,建议去B站浏览相关视频
我好像理解了一点,但是我就是不知道是怎么算出来的。比如35的二进制 不可能数到第35吧,有没有一些算法之类的 {:10_249:} 18408238295 发表于 2021-11-23 20:05
{:5_94:} 本帖最后由 jackz007 于 2021-11-23 21:58 编辑
#include <stdio.h>
/* 本函数可以接受十进制到 2 ~ 16 进制数的转换,输入参数 d 是准备转换的目标进制数 */
char * foo(char s[] , int n , int d)
{
char b[] = "0123456789ABCDEF" ;
int e , k ;
if(d >= 2 && d <= 16) {
for(k = n , e = 0 ; k ; k /= d , e ++) ;
for(s = 0 ; e ; n /= d , e --) s = b ;
} else s = 0 ;
return s ;
}
int main(void)
{
char s ;
int x ;
scanf("%d" , & x) ;
printf("二进制 : %s\n" , foo(s , x , 2)) ;
printf("八进制 : %s\n" , foo(s , x , 8)) ;
printf("十进制 : %s\n" , foo(s , x , 10)) ;
printf("十六进制 : %s\n" , foo(s , x , 16)) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
98765
二进制 : 11000000111001101
八进制 : 300715
十进制 : 98765
十六进制 : 181CD
D:\00.Excise\C>x
12
二进制 : 1100
八进制 : 14
十进制 : 12
十六进制 : C
D:\00.Excise\C> {:10_269:}
页:
[1]