哥白尼 发表于 2021-11-23 19:05:50

二进制十进制十六进制

一直没明白十进制 二进制 十六进制到底是什么意思
他们之间的转换又是什么意思?
求大佬指教。

jackz007 发表于 2021-11-23 19:22:37

本帖最后由 jackz007 于 2021-11-23 19:27 编辑

       就是同一个数,多种不同的表达形式而已,比如,十进制数 12 ,写成二进制是 0000 1100,写成八进制是 14,写成十六进制就是 0x0c,其实,它们都是同一个数,十进制数 12。我们通常不用非十进制表达,那是因为我们更加熟悉和习惯于十进制数。

a327904410 发表于 2021-11-23 19:55:24

文字解释看着很枯燥,建议去B站浏览相关视频

哥白尼 发表于 2021-11-23 19:57:45

a327904410 发表于 2021-11-23 19:55
文字解释看着很枯燥,建议去B站浏览相关视频

我好像理解了一点,但是我就是不知道是怎么算出来的。比如35的二进制 不可能数到第35吧,有没有一些算法之类的

18408238295 发表于 2021-11-23 20:05:55

{:10_249:}

哥白尼 发表于 2021-11-23 20:25:59

18408238295 发表于 2021-11-23 20:05


{:5_94:}

jackz007 发表于 2021-11-23 21:57:04

本帖最后由 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>

ldtxa 发表于 2021-12-7 20:31:38

{:10_269:}
页: [1]
查看完整版本: 二进制十进制十六进制