精华内容
下载资源
问答
  • C语言算法之将十进制数转换成二进制数

    万次阅读 多人点赞 2018-06-20 14:35:29
    导语:在C语言中没有将...下面给大家讲述一下如何编程实现将十进制数转换成二进制数。 先将源代码展示给大家: #include <stdio.h> void main() { //进制转换函数声明 int transfer(int x)...

    导语:在C语言中没有将其他进制的数直接输出为二进制数的工具或方法,输出为八进制数可以用%o,输出为十六进制可以用%x,输出为二进制就要我们自行解决了。下面给大家讲述一下如何编程实现将十进制数转换成二进制数。

     

    先将源代码展示给大家:

    #include <stdio.h>
    void main()
    {
        //进制转换函数的声明
        int transfer(int x);
        int x;
        printf("请输入一个十进制数:");
        scanf("%d",&x);
        printf("转换成二进制数是:%d\n",transfer(x));
    }
    int transfer(int x)
    {
        int p=1,y=0,yushu;
        while(1)
        {
            yushu=x%2;
            x/=2;
            y+=yushu*p;
            p*=10;
            if(x<2)
            {
                y+=x*p;
                break;
            }
        }
        return y;
    }

    具体算法体现在函数体内,使用了一个while(1)的死循环,当结果产生后跳出循环。变量yushu是每一次循环内产生的余数,变量x每次循环都会被赋予新的值,这个新的值就是每一次循环内产生的商。当产生的商小于2时即产生了最后的结果(二进制数),然后跳出循环。

    例如:函数自变量若为7,用自变量7除以2,得到第一次循环产生的余数为1,第一次循环产生的商为3;用第一次循环产生的商3除以2,得到第二次循环产生的余数为1,第二次循环产生的商为1。

    变量y的存放也是有一定技巧的,由于每次产生的余数都小于2并且都是最后二进制数中需要按位展现出来的,因此每一次循环产生的余数都要合理地进行存放。第一次产生的余数放在个位,第二次产生的余数放在十位,第三次产生的余数放在百位......依次类推,直至某一次循环产生的商小于2,最后再把小于2的那个商放在最高位。变量p的作用就是控制位数,变量y的初始值定为0,变量p的初始值定为1,每次循环内变量p都自乘10,每次循环内都让变量y加上yushu*p,这样就实现了余数的按位存放。最后将小于2的那个商乘以p加到变量y中,得到最后的二进制数。

    例如:还是以自变量7为例,第一次循环后y的值为1,第二次循环内if语句之前y的值为11,if语句内y的值变为111,111即为7的二进制数。

    注意:变量p的自乘要放在变量y加上yushu*p之后!顺序不能颠倒!

    欢迎大家关注/订阅我的微信公众号Code Art Online,我会在我的公众号分享个人见闻,发现生活趣味;这里不仅有0和1,还有是诗和远方↓↓↓

    展开全文
  • 本文介绍了一种shell脚本,用来处理十进制数转换成十六进制的方法。现有两个数据文件i0.txt和q0.txt,数据如下: i0.txt q0.txt   935 3297  385 6964  -280 1

        本文介绍了一种shell脚本,用来处理十进制数转换成十六进制的方法。现有两个数据文件i0.txt和q0.txt,数据如下:

    i0.txt                     q0.txt              

      935                    3297

      385                    6964

     -280                 12697

    1768                   8404

    7377                    -852

     

     

    #!bin/bash

    #因为有负数,所以先转换成16位十六进制数 %16x

    cat  i.txt  |  \

    awk  '{printf  "%16x  \n",$1}'  > i00.txt

    cat  q.txt  |  \

    awk  '{printf  "%16x  \n",$1}'  > q00.txt

     

    #我需要的是i0.txt和q0.txt十进制数对应的4位十六进制数,取有效的4位

    cut  -c  13-16  i00.txt  >  i_mem.txt

    cut  -c  13-16  q00.txt  > q_mem.txt

     

    #不足4位的,前面补0

    cat  i_mem.txt  |  \

    awk  '{printf  "%04s  \n",$1}'  >  i_mem_00.txt

    cat  q_mem.txt  |  \

    awk  '{printf  "%04s  \n",$1}'  >  q_mem_00.txt

     

    #将两个文件(各4位)组成8位十六进制数

    paste  -d  ":"  i_mem_00.txt  q_mem_00.txt  > rfiu_mem_00.txt

    sed  's/  ://g'  rfiu_mem_00.txt  >  rfiu_mem.txt

     

    #中间数据如下:

           i00.txt                         q00.txt

               3a7                             ce1

               181                          1b34

    ffffffffffffa1f                           3199

               6e8                           20d4

             1cdc                 fffffffffffffcac

     

         i_mem.txt                 q_mem.txt

               3a7                             ce1

               181                          1b34

               fa1f                           3199

               6e8                           20d4

             1cdc                             fcac

     

     i_mem_00.txt               q_mem_00.txt

              03a7                            0ce1

               0181                          1b34

               fa1f                             3199

               06e8                           20d4

             1cdc                              fcac

     

            rfiu_mem.txt

               03a70ce1

               01811b34

               fa1f 3199

               06e820d4

              1cdcfcac

        

    注:可能这个方法不是最精简的,如有更好的方法请高手指点一二,不胜感激。  
    展开全文
  • 进制转换十进制数十六进制数 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,...

    进制转换:十进制数转十六进制数

    问题描述

    十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
      给出一个非负整数,将它表示成十六进制的形式。

    代码描述(一)

    #include <stdio.h>
    int main()
    {
        int n,i,j=0;
        char a[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//*创建一个十进制与十六进制对应的数组,并对其赋值*//
        char b[32];//*存放已转换好的十六进制的数组长度未知,自定义的长度32*//
        scanf("%d",&n);
        while(n>=16)
        {
            i=n%16;
            b[j]=a[i];
            j++;//*新的数组的下标移位*/
            n=n/16;
        }//*该while循环体的作用是把n大于16的数转换十六进制数再依次输入新的数组中*//
        if(n<16)
            b[j]=a[n];
        //*注意:此时数组b[]内的十六进制数是倒过来存储的*//
        while(j>=0)
        {
            if(j>0)//*判断是不是最后一个,不是的话输出,是的话直接换行*//
                printf("%c",b[j]);
            else
                printf("%c\n",b[j]);
            j--;
        }
        return 0;
    }
    

    代码描述(二)

    #include <stdio.h>
    int main()
    {
        int n, i, j = 0;
        char a[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
        char b[32];
        scanf("%d", &n);
        if (n ==0)
            printf("0\n");
        while (n)
        {
            i = n % 16;
            b[j] = a[i];
            ++j;
            n = n / 16;
        }
        for (i = j; i > 0; i--)
            printf("%c", b[i-1]);
        printf("\n");
        return 0;
    }
    
    展开全文
  • 实验课题一 将一个十进制数转换成另外一个P进制数字符串可以是二进制到十六进制转换函数原 型为 void Convert (int n, char str[], unsigned P; n输入待转换数 str输出转换好P进制字符串 P输入要转换进制...
  • 十进制转换成十六进制

    千次阅读 2015-02-27 10:21:11
    十六进制计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制17在十六进制中是11,以此类推,十进制30在十六进制中是1E。  给出一个非负整数,将它表示成十六进制的形式。 输入格式
    问题描述
      十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
      给出一个非负整数,将它表示成十六进制的形式。
    输入格式
      输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
    输出格式
      输出这个整数的16进制表示
    样例输入
    30
    样例输出
    1E

    /*十六进制转化成十进制*/

    #include <stdio.h>

    char string[100];

    int main(int argc, char ** argv){

        int n, i = 0;

        while (scanf("%d", &n) == 1) {

            if (n == 0) {

                printf("%d",n);

            }

            while (n != 0) {

                if (n % 16 >= 0 && n % 16 <= 9) {

                    string[i] = n % 16 + '0';

                }else{

                    string[i] = n % 16 + 'A' -10;

                }

                n /= 16;

                i++;

            }

            i--;

            for (; i >= 0; i--) {

                printf("%c", string[i]);

            }

        }

        return 0;

    }

    /*

     总结:

     1.不要忘记考虑n为零的时候

     2.将整数转换成字符的时候注意分情况进行讨论

     */


    展开全文
  • 十进制数转换成二进制数-般分为两个步骤,即整数部分转换和小数部分转换。 (1 )整数部分转换 *除2取余法:*这种方法是由于D10=N2 =dn-1x2n-1十dn-2x2n-2 +… d1x21十d0x20,所以具体方法是把给定十进制整数除以...
  • int dec = Integer.parseInt(“十进制字符串”); //例如 EditText直接获取输入数字。  String hexString = Integer.toHexString(dec);
  • 十六进制转换成十进制的方法:首先确定一个十六进制数;然后计算出第0位以及第1位的权值;接着在第N位上,表示大小为“X * 16”的N次方;最后通过竖式计算出转换结果即可。1、十六进制转十进制:16进制数的第0位的...
  • 编写一个方法h2D(String s)将一个由数字字符和大写字母A、B、C、D、E、F组成十六进制数转换成十进制数。 编写一个测试类,输入一个整数n,后面跟n个十六进制串,调用上述方法把它们转换成十进制整数,并输出它们...
  • 第六章 二进制、八进制、十六进制 6.1 为什么需要八进制和十六进制? 6.2 二、八、十六进制数转换到十进制数 6.2.1 二进制数转换为十进制... 6.2.5 十六进制数转换成十进制数 6.2.6 十六进制数的表达方法 6....
  • !... 使用事QString进行转换 采用是for循环,将十进制数转为16进制 ``` payload += " "; payload = QString().sprintf("%.2X",data[i]); ``` 以空格隔开,可是显示到后面,就会出现对不齐,怎么解决
  • 一.二进制和十进制 1.十进制转二进制 十进制数除2取余法,即十进制数除2,余数为权位上数,得到商值继续除2,依此步骤继续向下运算直到...(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)...
  • 二进制转换成十六进制输出C代码

    千次阅读 2018-09-20 19:10:47
    我自己试着编写代码,思路是把这个8bit二进制数存放到一个数组里面,分高4bit和低4bit,分别转换成十进制,然后用switch判断这个十进制转换成对应十六进制数,例如十进制1对应十六进制1,十进制10对应十六进制A...
  • STM32 十进制转换成十六进制的实现(有例程),在Keil5里面用C语言实现,不用scanf函数 我看了很多十进制转换十六进制文章,几乎全部都是利用scanf()函数写,这和我想实现功能并不一样,于是我打算自己写一...
  • 1.题目: 问题描述  给出一个非负整数,将它...写一个方法,传入int类型的十进制数,最后返回一个十六进制的字符串结果。此时返回字符串是逆序,最后输出时反向即可。 具体处理:因为是转十六进制,所以不断对16
  • 本文收藏整理在SQL中使用sql实现进制转换,如:十进制转为十六进制十六进制转为十进制、整数转换成二进制、数字转换成16进制各种方法,一一介绍如下:第一、十进制转为十六进制 DECLARE @binary varbinary(255)...
  • K8000=H 1F40方法二:口诀::找大位,定高位,依次除权,取商用余当把一个十进制数转换为二,十六进制数时,首先找大位,定高位,这里大位和高位均指二,十六进制位权值。大位和高位必须符合下面条件:大位>...
  • 展开全部八进制与十六进制之间转换32313133353236313431303231363533e4b893e5b19e31333366303831有两种...例如一个十六进制数053977,将其转换成二进制001 010 011 100 101 110 111,再将该二进制转换为八进制,...
  • toInt只能转换成十进制整数,因此在QString的十六进制字符串转成十进制花了一些心思,专门写了一些类似QString_to_hex函数来进行这些转换,相信以后不会再犯这种错误了,下面这个函数为例说明Qt中QString::toInt...
  • 文章目录二进制转八进制二进制转十进制二进制转十六进制八进制转二进制十进制转二进制十六进制转二进制八进制或者十六进制转十进制十进制转八...方法为:把二进制数按权展开、相加即得十进制数。 二进制转十六进制...
  • 十进制转二进制方法相同,十六进制数用0~9和A,B,C,D,E,F进行表示,用短除法进行计算,例如将120转化成十六进制数 120÷16=7 余8 7÷16=0 余7 故十六进制数为78 二、十六进制转十进制 与二进制转十六进制数方法相同...
  • K8000=H 1F40方法二:口诀::找大位,定高位,依次除权,取商用余当把一个十进制数转换为二,十六进制数时,首先找大位,定高位,这里大位和高位均指二,十六进制位权值。大位和高位必须符合下面条件:大位>...
  • 1. 二进制转换成八进制  方法:3位二进制数按权展开相加得到1位八进制数... 方法:把二进制数按权展开,相加即得十进制数。  例子:11101 = 1*2四次方 + 1*2三次方 + 1*2二次方 + 0*2一次方 + 1*2...
  • 一、十进制转二进制 我们可以做除法,用该数除以2,记录余数,得到商再除以2,直到商为0,停下来。...三、java函数中有方法能直接把十进制数转换为二进制数或十六进制。 int a=10; System.out.println(Integ.
  • 一、十进制整数转换为二进制 一般方法:对所给数字除以2进行求余,然后从最后一个余数读到第一个余数,以11为例。 可求得其二进制为:1011 针对不太大数字,我们可以用简便方法。 首先,我们解析一下十进制数字,...
  • * Goal:十进制数转换成八进制、二进制、十六进制 * Author:Tang.Mitnick * Site:FaFu * */ /*设计思想:封装一个方法使它实现十进制向二进制、八进制、十六进制的转换 * 首先如果这个数非零,则把它与要转换...
  • 工作中遇到一个使用方法 利用就是计算机存储特性,需要注意大小端 char sDec[4] = {0x05,0xc5,0xb3,0xea}; 低字节序情况下. 并且 int 占用 32bit. char sDec[4] = {0x05,0xc5,0xb3,0xea}; int val = 0...
  • 十六进制计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制17在十六进制中是11,以此类推,十进制30在十六进制中是1E。  给出一个非负整数,将它表示成十六进制的形式。 输入格式 输入包含一个...
  • 十六进制计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制17在十六进制中是11, 以此类推,十进制30在十六进制中是1E。  给出一个非负整数,将它表示成十六进制的形式。 输入格式  输入包...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 401
精华内容 160
关键字:

十进制数转换成十六进制数的方法