精华内容
下载资源
问答
  •  之前使用SQL把十进制的整数转换为三十进制,SQL代码请参考:SQL Server 进制转换函数,其实它是基于、八、十、十六进制转换的计算公式的,进制之间的转换是很基础的知识,但是我发现网络上没有一篇能把它说的...

    目录

    三.进制转换算法(Convert)

    (一) (二、八、十六进制) → (十进制)

    (二) (十进制) → (二、八、十六进制)

    (三) (二进制) ↔ (八、十六进制)

    (四) (八进制) ↔ (十六进制)

    四.扩展阅读


     

     之前使用SQL把十进制的整数转换为三十六进制,SQL代码请参考:SQL Server 进制转换函数,其实它是基于二、八、十、十六进制转换的计算公式的,进制之间的转换是很基础的知识,但是我发现网络上没有一篇能把它说的清晰、简单、易懂的文章,所以我才写这篇文章的念头,希望能让你再也不用担心、害怕进制之间的转换了。

      下面是二、八、十、十六进制之间关系的结构图:

    wpsC01D.tmp

    (Figure1:进制关系结构图)

    下文会分4个部分对这个图进行分解,针对每个部分会以图文的形式进行讲解:

    1. (二、八、十六进制) → (十进制);
    2. (十进制) → (二、八、十六进制);
    3. (二进制) ↔ (八、十六进制);
    4. (八进制) ↔ (十六进制);

    三.进制转换算法(Convert)

      在数字后面加上不同的字母来表示不同的进位制。B(Binary)表示二进制,O(Octal)表示八进制,D(Decimal)或不加表示十进制,H(Hexadecimal)表示十六进制。例如:(101011)B=(53)O=(43)D=(2B)H

    (一) (二、八、十六进制) → (十进制)

    wpsC01E.tmp

    (Figure2:其他进制转换为十进制)

    • 二进制 → 十进制

      方法:二进制数从低位到高位(即从右往左)计算,第0位的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。

      例:将二进制的(101011)B转换为十进制的步骤如下:

    1. 第0位 1 x 2^0 = 1;

    2. 第1位 1 x 2^1 = 2;

    3. 第2位 0 x 2^2 = 0;

    4. 第3位 1 x 2^3 = 8;

    5. 第4位 0 x 2^4 = 0;

    6. 第5位 1 x 2^5 = 32;

    7. 读数,把结果值相加,1+2+0+8+0+32=43,即(101011)B=(43)D。

    • 八进制 → 十进制

      方法:八进制数从低位到高位(即从右往左)计算,第0位的权值是8的0次方,第1位的权值是8的1次方,第2位的权值是8的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。

      八进制就是逢8进1,八进制数采用 0~7这八数来表达一个数。

      例:将八进制的(53)O转换为十进制的步骤如下:

    1. 第0位 3 x 8^0 = 3;

    2. 第1位 5 x 8^1 = 40;

    3. 读数,把结果值相加,3+40=43,即(53)O=(43)D。

    • 十六进制 → 十进制

      方法:十六进制数从低位到高位(即从右往左)计算,第0位的权值是16的0次方,第1位的权值是16的1次方,第2位的权值是16的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。

      十六进制就是逢16进1,十六进制的16个数为0123456789ABCDEF。

      例:将十六进制的(2B)H转换为十进制的步骤如下:

    1. 第0位 B x 16^0 = 11;

    2. 第1位 2 x 16^1 = 32;

    3. 读数,把结果值相加,11+32=43,即(2B)H=(43)D。

    (二) (十进制) → (二、八、十六进制)

    wpsC01F.tmp

    (Figure3:十进制转换为其它进制)

    • 十进制 → 二进制

      方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。 

      例:将十进制的(43)D转换为二进制的步骤如下:

    1. 将商43除以2,商21余数为1;

    2. 将商21除以2,商10余数为1;

    3. 将商10除以2,商5余数为0;

    4. 将商5除以2,商2余数为1;

    5. 将商2除以2,商1余数为0; 

    6. 将商1除以2,商0余数为1; 

    7. 读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,101011,即(43)D=(101011)B。

    wpsC02F.tmp

    (Figure4:图解十进制 → 二进制)

    • 十进制 → 八进制

      方法1:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。

      例:将十进制的(796)D转换为八进制的步骤如下:

    1. 将商796除以8,商99余数为4;

    2. 将商99除以8,商12余数为3;

    3. 将商12除以8,商1余数为4;

    4. 将商1除以8,商0余数为1;

    5. 读数,因为最后一位是经过多次除以8才得到的,因此它是最高位,读数字从最后的余数向前读,1434,即(796)D=(1434)O。

    wpsC030.tmp

    (Figure5:图解十进制 → 八进制)

      方法2:使用间接法,先将十进制转换成二进制,然后将二进制又转换成八进制;

    wpsC031.tmp

    (Figure6:图解十进制 → 八进制)

    • 十进制 → 十六进制

      方法1:除16取余法,即每次将整数部分除以16,余数为该位权上的数,而商继续除以16,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。

      例:将十进制的(796)D转换为十六进制的步骤如下:

    1. 将商796除以16,商49余数为12,对应十六进制的C;

    2. 将商49除以16,商3余数为1;

    3. 将商3除以16,商0余数为3;

    4. 读数,因为最后一位是经过多次除以16才得到的,因此它是最高位,读数字从最后的余数向前读,31C,即(796)D=(31C)H。

    wpsC042.tmp

    (Figure7:图解十进制 → 十六进制)

      方法2:使用间接法,先将十进制转换成二进制,然后将二进制又转换成十六进制;

    wpsC043.tmp

    (Figure8:图解十进制 → 十六进制)

    (三) (二进制) ↔ (八、十六进制)

    wpsC044.tmp

    (Figure9:二进制转换为其它进制)

    • 二进制 → 八进制

      方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

      例:将二进制的(11010111.0100111)B转换为八进制的步骤如下:

    1. 小数点前111 = 7;

    2. 010 = 2;

    3. 11补全为011,011 = 3;

    4. 小数点后010 = 2;

    5. 011 = 3;

    6. 1补全为100,100 = 4;

    7. 读数,读数从高位到低位,即(11010111.0100111)B=(327.234)O。

    wpsC054.tmp

    (Figure10:图解二进制 → 八进制)

    二进制与八进制编码对应表:

    二进制

    八进制

    000

    0

    001

    1

    010

    2

    011

    3

    100

    4

    101

    5

    110

    6

    111

    7

     

    • 八进制 → 二进制

      方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。

      例:将八进制的(327)O转换为二进制的步骤如下:

    1. 3 = 011;

    2. 2 = 010;

    3. 7 = 111;

    4. 读数,读数从高位到低位,011010111,即(327)O=(11010111)B。

    wpsC055.tmp

    (Figure11:图解八进制 → 二进制)

    • 二进制 → 十六进制

      方法:取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。

      例:将二进制的(11010111)B转换为十六进制的步骤如下:

    1. 0111 = 7;

    2. 1101 = D;

    3. 读数,读数从高位到低位,即(11010111)B=(D7)H。

    wpsC056.tmp

    (Figure12:图解二进制 → 十六进制)

    • 十六进制 → 二进制

      方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。

      例:将十六进制的(D7)H转换为二进制的步骤如下:

    1. D = 1101;

    2. 7 = 0111;

    3. 读数,读数从高位到低位,即(D7)H=(11010111)B。

    wpsC057.tmp

    (Figure13:图解十六进制 → 二进制)

    (四) (八进制) ↔ (十六进制)

    wpsC058.tmp

    (Figure14:八进制与十六进制之间的转换)

    • 八进制 → 十六进制

      方法:将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。

      例:将八进制的(327)O转换为十六进制的步骤如下:

    1. 3 = 011;

    2. 2 = 010;

    3. 7 = 111;

    4. 0111 = 7;

    5. 1101 = D;

    6. 读数,读数从高位到低位,D7,即(327)O=(D7)H。

    wpsC069.tmp

    (Figure15:图解八进制 → 十六进制)

    • 十六进制 → 八进制

      方法:将十六进制转换为二进制,然后再将二进制转换为八进制,小数点位置不变。

      例:将十六进制的(D7)H转换为八进制的步骤如下:

    1. 7 = 0111;

    2. D = 1101;

    3. 0111 = 7;

    4. 010 = 2;

    5. 011 = 3;

    6. 读数,读数从高位到低位,327,即(D7)H=(327)O。

    wpsC06A.tmp

    (Figure16:图解十六进制 → 八进制)

    四.扩展阅读

      1. 包含小数的进制换算:

    (ABC.8C)H=10x16^2+11x16^1+12x16^0+8x16^-1+12x16^-2

    =2560+176+12+0.5+0.046875

    =(2748.546875)D

      2. 负次幂的计算:

    2^-5=2^(0-5)=2^0/2^5=1/2^5

    同底数幂相除,底数不变,指数相减,反过来

    3. 我们需要了解一个数学关系,即23=8,24=16,而八进制和十六进制是用这关系衍生而来的,即用三位二进制表示一位八进制,用四位二进制表示一位十六进制数。接着,记住4个数字8、4、2、1(23=8、22=4、21=2、20=1)。

     

    reference:

    https://www.cnblogs.com/gaizai/p/4233780.html

    展开全文
  • 版权声明:本文博主原创...java——》进制、八进制、十进制、十六进制之间的转换一、十进制进制进制转十进制三、进制转八进制、八进制转进制五、进制转十六进制六、十六进制转进制七、十进...

    版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。
    https://blog.csdn.net/weixin_43453386/article/details/88978305

    一、十进制转二进制

    在这里插入图片描述

    二、二进制转十进制

    在这里插入图片描述

    三、二进制转八进制

    在这里插入图片描述

    四、八进制转二进制

    在这里插入图片描述

    五、二进制转十六进制

    在这里插入图片描述

    六、十六进制转二进制

    在这里插入图片描述

    七、十进制转八进制(十六进制)

    方法一、十进制转成二进制,然后再由二进制转成八进制(十六进制)

    方法二、十进制转八进制(十六进制)

    在这里插入图片描述

    八、八进制(十六进制)转十进制

    在这里插入图片描述

    展开全文
  • 十进制的168转换为二进制

    千次阅读 2013-06-23 23:11:12
    得出结果 将十进制的168转换为二进制,(10101000)2  分析: 第一步,将168除以2,商84,余数为0。  第二步,将商84除以2,商42余数为0。  第三步,将商42除以2,商21余数为0。  第步,将商21除以2,商10...
    得出结果 将十进制的168转换为二进制,(10101000)2 

    分析:

    第一步,将168除以2,商84,余数为0。 

    第二步,将商84除以2,商42余数为0。 
    第三步,将商42除以2,商21余数为0。 
    第四步,将商21除以2,商10余数为1。 
    第五步,将商10除以2,商5余数为0。 
    第六步,将商5除以2,商2余数为1。 
    第七步,将商2除以2,商1余数为0。 
    第八步,将商1除以2,商0余数为1。 

    第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000 

    展开全文
  • VC 进制转换,可完成以下转换:转换十进制数,转换二进制数,转换十六进制数,转换十六进制为二进制,转换一位十六进制数为十进制,转换二进制为十六进制,位数不是的倍数时补齐,每位二进制数转换为一十进制...
  • 级水平:如果不滚开,我就和你同归于尽; 级水平:你若不离不弃,我必生死相依; 八级水平:问世间情何物,直教人生死相许; 专家水平:天地合,乃敢与君绝; 活佛水平:你见或者不见,爱就在那里,不增不...

    之前有一个很流行的段子:

    英文:“If you do not leave with me , we will die together.”

    翻译:

    四级水平:如果不滚开,我就和你同归于尽;

    六级水平:你若不离不弃,我必生死相依;

    八级水平:问世间情为何物,直教人生死相许;

    专家水平:天地合,乃敢与君绝;

    活佛水平:你见或者不见,爱就在那里,不增不减。

    同理

    对于问题:“用C语言实现将一个十进制整数转换为二进制数。

    解答:

    C语言四级水平:

     1 #include<stdio.h>
     2 enum BOOL 
     3 {
     4     FALSE = 0,
     5     TRUE = !FALSE
     6 }typedef bool; //这里应用枚举类型重新定义bool类型的原因是应用gcc编译不支持bool类型
     7 int main(void)
     8 {
     9     int i=0,j,N;
    10     bool Num[32];//C语言中整形数4个字节32位
    11     scanf("%d",&N);
    12     while(1)
    13     {
    14     Num[i]=N%2;
    15     N=N/2;
    16     if(N==0)
    17     break;
    18     i++;
    19     }
    20     for(j=i;j>=0;j--)
    21         printf("%d",Num[j]);
    22         printf("\n");
    23 return 0;
    24 }

    解释说明:将十进制数转换为二进制的最基本的原理是除二取余倒排列。应用一个数组先顺序的将整型数除以二的余数存起来,然后倒序输出。

    C语言六级水平:

    #include<stdio.h>
    int main()
    {
        int Num[32]={0};
        int *p=Num;
        /*
        这里可以分部的写成:
        int *p;
        p=Num;(实际上就是:p=&Num[0];)
        */
        int i=0,n;
        scanf("%d",&n);
    while(n>0)
    {
         *p=n%2;
         i++;   
         n=n/2;
         p++;
    }
    while(i>0)
    {
    printf("%d",*(p-1));//由于在上面的一个while循环中p已经加了1,即完成上面的一个循环后p所指向的值始终为0
    p--;
    i--;
    }
        printf("\n",*p);
    return 0;
    }

    解释:这里学习了指针之后,可以应用指针来对数组进行操作,仅对本问题而言就是多了一种解决问题的方法,就像从四级到六级扩大了词汇量一样。

    C语言八级水平:

     1 #include<stdio.h>
     2 void Decimal_to_binary(int N);
     3 void main()
     4 {
     5   int N;
     6   scanf("%d",&N);
     7   Decimal_to_binary(N);
     8   printf("\n");
     9 }
    10 void Decimal_to_binary(int N)
    11 {
    12      if(N)  //if语句只要条件为真即去执行
    13      {
    14        Decimal_to_binary(N/2); //在函数自身中调用自身,即递归的思想
    15        printf("%d",N%2);
    16      }
    17 } 

    解释:应用递归的思想,反复的去去除二取余,在Decimal_to_binary(int N)函数的if语句中第一次调用printf函数是在经过若干次除以二商为零时。

    C语言专家水平:

     1 #include<stdio.h>  
     2 void Decimal_to_binary(int N);
     3 void main()
     4  {
     5    int N;
     6    scanf("%d",&N);
     7    Decimal_to_binary(N);
     8    printf("\n");
     9  } 
    10 void Decimal_to_binary(int N)  
    11 {  
    12   int i,t;   
    13   t=1<<31;  
    14   for(i=1;i<=32;i++)  
    15   {  
    16     putchar(N&t?'1':'0');  
    17     N=N<<1;  
    18     if(i%8==0)  
    19     printf("  "); 
    20   }  
    21 }  

    解释:该方法的最大特点是引用的C语言的中的位操作,即左移动运算。基本的思想是将1左移动31位,然后循环的对函数Decimal_to_binary(int N)传入的参数进行移位取出每一位与1相与,输出的为结果为0则输出0,结果为1则输出1.

    C语言活佛水平:

     1 #include<stdio.h>
     2 #include <stdlib.h>
     3 
     4 void Decimal_to_binary(int number)
     5 {
     6      int i=0; 
     7      char *P;
     8      P = (char*)malloc(33); //应用动态内存分配
     9      for(i;i<32;i++)
    10      {
    11          P[i] = number & (1<<(31-i));
    12          P[i] = P[i] >> (31-i);
    13          P[i] = (P[i] == 0) ? '0' : '1';
    14      }
    15      P[i] = '\0'; //C语言中字符输出的结尾是'\0'
    16      printf("%s\n",P);
    17      free(P);//释放内存
    18 }
    19 void main()
    20 {
    21    int n;
    22    scanf("%d",&n);
    23    Decimal_to_binary(n);
    24 }

    解释:应用动态内存分配的思想,分配33字节的存储空间,然后应用移位的方法,进行按位操作,最后释放所分配的存储空间。这样做可以最大限度的节省存储空间。

    Sum:C语言重剑无锋,路漫漫求修远兮!

    声明:本文为原创,转载请声明。

     

    转载于:https://www.cnblogs.com/ShanShi012/p/5313456.html

    展开全文
  • round(n,ndigits) 舍五入,ndigits可指定浮点数位数: eg....十六进制与整数的转换 bin(x):将整数转换二进制数,eg. bin(123)==>0b1111011;若想格式化去掉前缀,可使用format函数:format(123,'b').
  • 进制转换

    2020-11-21 08:24:06
    *设我们要将n进制转换为十进制,首先我们从n进制的右边为第一位数开始,第一位乘是n的0次方,第位是n的1次方,依次递增下去,把最后的结果相加的值就是十进制的值了。 2.十进制转其他 取余法 注意取得余数的顺序...
  • 例如:一双筷子(即逢进一),十毫米等于一厘米(即逢十进一)、一刻钟(即逢十五进一)、一小时(即逢六十进一),十二个月一年(即逢十二进一)等等 在计算机中采用的是二进制,它的特点是“逢进一”,因此...
  • #将一个整数转换为二进制、八进制、十六进制的文本字符串形式,只要分别使用内建的bin(),oct(),hex()即可 #eg: x = 1234 print(oct(x))#0o2322 print(bin(x))#0b10011010010 print(hex(x))#0x4d2 #如果不想出现0o,0...
  • VC++ 各种进制转换,16进制转换进制、转换十进制数、转换进制为十进制、每进制数转换为一十进制数、转换进制为十六进制等://将16进制的一个字符转换为十进制的数 unsigned char CConvNumsDlg::...
  • 机算机,八,,十六进制转换

    千次阅读 2012-11-13 22:46:55
    例如:一双筷子(即逢进一),十毫米等于一厘米(即逢十进一)、一刻钟(即逢十五进一)、一小时(即逢六十进一),十二个月一年(即逢十二进一)等等 在计算机中采用的是二进制,它的特点是“逢进一”,因此...
  • 栈——进制转换

    2013-05-30 11:14:43
    二进制到八进制   地球人都知道,我们学习编程常常会接触到不同进制的数,而...什么没有三进制四进制、五进制呢? (⊙v⊙)嗯,我们仔细观察二进制跟十六进制的对应关系: 二进制跟十六进制
  • 10进制与26进制转化

    2021-04-03 11:22:04
    、问题分析2.1规律解析2.2 十进制<---->、八、十六进制2.3进制<---->八进制、十六进制三、26进制转化10进制、10进制转化26进制五、10进制转化26进制中出现的问题及方法5.1问题提出5.2 问题...
  • 栈和队列3:进制转换 让编程改变世界 Change the world by program 从二进制到八进制 ...地球人都知道,我们学习编程常常会接触到不同进制的数,而最多的...什么没有三进制四进制、五进制呢? (⊙v⊙...
  • 1.十进制--Java中数值默认都是10进制,不需加任何修饰。 2.进制--数值前面以0b开头,b大小写都可以。 3.八进制--数值前面以0开头。...8.进制转十六进制:将进制一组,再进行转换
  • 程序员二进制计算器 v1.36

    热门讨论 2014-07-16 16:21:43
    支持字符常量,字符型自动转换为整型(值为该字符的ASCII码),支持C/C++转义字符。 如何得到字符的ASCII码: 'a' = 97 'A' = 65 'a' + 3 = 100 'a' - 'A' = 32 '\''=39 '\"' = '"' = 34 '\? = '?' = 63 '\\...
  • java获取一个数的二进制的某位

    千次阅读 2018-03-20 17:00:13
    其实就是把一个十进制的数转换为二进制,然后分为段拆分。 java 中byte占1个字节,1个字节八位,并且是有符号的,要想是没有符号得自己处理一下,byte &amp; 0xff 或者 if(bye &lt;0) byte+256 进入...
  • 二十六

    2020-05-13 21:09:42
    java基础 一。 字符型转整形 对照ASCII编码表,都有对应的数值。 整形转字符型时,使用强制转换 二—— 三元运算符 格式: 数据类型 变量名 = 布尔类型表达式?...十进制转化为二进制:使用除以2获取余数的.
  • *问题描述:把十进制的整数转换为二至九之间的任一进制数输出。请利用栈设计算法,并实现程序。  *代码1:主函数代码 #include #include "sqstack.h" void MultiBaseOutput (int number,int base) { //假设...
  • /* ...*All rights reserved. *文件名称:Graph.cpp *作 者:苏凯祺 ...把十进制的整数转换为二至九之间的任一进制数输出。请利用栈设计算法,并实现程序。 提示:要转换为r进制,则原来的数逐次除以
  • 数制的表示与转换

    2020-02-10 21:18:38
    数制的表示 一般我们默认的数制表示是十进制 将其他今只转化为十进制 2-8,2-16进制的转换 三位进制数表示一位八进制数 进制数表示一位十六进制数 ...将十进制转换八十进制 ...
  • 计算机可以用、八以及十六四种数制表示数据,利用栈的特性设计程序自动实现数制之间的转化。需要注意的是,在程序中要能实现带小数部分的数值的转化。思想:本实验要求利用栈来实现数值转换,关于数值转换...
  • 问题及代码: ... *问题描述:把十进制的整数转换为二至九之间的任一进制数输出。请利用栈设计算法,并实现程序。 */ #ifndef TOU1_H_INCLUDED #define TOU1_H_INCLUDED #define MaxSize 100 typedef int Ele
  • 将一个字符串S映射为一个整数:(1)大写字母“A~Z”:A~Z视为0~25,将26个字符对应到进制,按照进制转换为十进制:代码:int hashFunc(char S[], int len){ int id=0; for(int i=0; i&lt;len; i++...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 133
精华内容 53
关键字:

十进制六十四转换为二