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

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

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

    原文的实现方式太年轻了,是我大一的时候写的。由于太多小伙伴被『溢出』困扰(在溢出的情况下原文的实现就不灵了),补充下面这种最佳的实现方式。

    最佳的方式是利用栈先进后出的特性,计算每一位(0或1)压入栈中,再将所有元素出栈得到的01串就是目标二进制数。以下为C++实现代码,想用C语言实现的可以进行相应的改造,用数组实现一个栈,用字符数组实现字符串。

    #include <iostream>
    #include <stack>
    
    using namespace std;
    
    string transfer(int x) {
        if (x == 0) {
            return "0";
        }
        string ret;
        stack<char> st;
        while (x > 0) {
            if (x % 2 == 1) {
                st.push('1');
            } else {
                st.push('0');
            }
            x /= 2;
        }
        while (!st.empty()) {
            ret.push_back(st.top());
            st.pop();
        }
        return ret;
    }
    
    int main() {
        int x;
        cin >> x;
        cout << transfer(x) << endl;
        return 0;
    }

    下面是大一时候的实现,没有考虑溢出的问题,对于不懂栈的同学可以看一下。

    先将源代码展示给大家:

    #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,还有是诗和远方↓↓↓

    展开全文
  • 十六进制 简单的二进制将十进制数转换十六进制,十进制和二进制数。 下载并解压缩后,运行make命令。 $使 要仅清理.o文件,请输入make clean。 $使干净
  • 它是一个转换计算器。它可以将十进制数转换二进制八进制和十六进制。 它可以将二进制数转换为十进制和八进制十六进制
  • 实验二 数制转换 将一个十六位二进制数转换十六进制数并在屏幕输出
  • 十进制数转换成十六进制数~C语言

    万次阅读 2017-10-28 16:56:49
    /*****下面将整数a转换成十六进制输出的字符串*****/ /*****原理:1,首先知道0b100000 = 0b10000*2 = 0b1000*2 = 0b100*2 =0b10*2 利用这一特性能将char型的数字转换成10进制表示,比如:0b1111转换成15 **** *...
    #include <stdio.h>

    /*****下面将整数a转换成十六进制输出的字符串*****/
    /*****原理:1,首先知道0b100000 = 0b10000*2 = 0b1000*2 = 0b100*2 =0b10*2   利用这一特性能将char型的数字转换成10进制表示,比如:0b1111转换成15     **** */
    /*****           2,15以内的十进制数输出成十六进制数的字符串显示方法是:当0~9时,直接输出n+'0',其中n表示具体的十进制数;当10到15时,用‘a’+n-10 表示     *****/
    /*****           3,在32位的芯片最大只能表示32位的二进制数                                                                                                                                                                  *****/
    /*****           4,比如想要显示0XABCDEF99 ,先把A这个字符存进char数组,在把B存进char数组 ,以此类推,最后在char数组存进字符串结束符‘\0’                     ****/
    int sw1016(unsigned int a,char *p)
    {
     unsigned int mask=0x80000000;
     int t=0;
     int k=0;
     int sum=0;
     int c=2;
     *(p+0)='0';
     *(p+1)='X';
     *(p+10)='\0';
     for(k=0;k<8;k++)
     {
     
     for(t=0;t<4;t++)
     {
      if((a&mask)==mask)
      {
       sum=sum*2+1;
       }
      else
      {
       sum=sum*2+0;
       }
       a=a<<1; 
      }
      
     if(sum<10)
     p[c]=sum+'0';
     else
     p[c]='a'+sum-10;
     sum=0;
     c++;
       }
       return 0; 
    }
    int main()
    {  
       unsigned int in=486256;
     char p[11];
     sw1016(in,p);
     printf("xen:%s",p);
    }
    展开全文
  • 二进制文件转化成十六进制的ascii码形式,用于编程使用。输出文件内容格式:0x52,0x49,0x46,0x46,0x3E,0x02,0x00,0x00,0x51,0x4C,可以拷贝到程序里面的数组里直接使用。
  • * 利用循环将一个十进制数转换成十六进制数 * 0-9/0-9 * 10 A,11 B,12 C, 13 D,14 F.15 E */ import java.util.*; public class Demo09 { public static void main(String [] args) { Scanner input =...
    package Demo;
    /*
     * 利用循环将一个十进制数转换成十六进制数
     * 0-9/0-9
     * 10 A,11 B,12 C, 13 D,14 F.15 E
     */
    import java.util.*;
    public class Demo09 {
        public static void main(String [] args) {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入一个十进制数,将转换成十六进制");
            int b = input.nextInt();
            boolean flag = true;
            while(flag) {
                int a;
                int c;
                c = b / 16;
                a = b - (c*16);
                b = c;
    
                switch(a) {
                case 0:
                    System.out.print("0");
                    break;
                case 1:
                    System.out.print("1");
                    break;
                case 2:
                    System.out.print("2");
                    break;
                case 3:
                    System.out.print("3");
                    break;
                case 4:
                    System.out.print("4");
                    break;
                case 5:
                    System.out.print("5");
                    break;
                case 6:
                    System.out.print("6");
                    break;
                case 7:
                    System.out.print("7");
                    break;
                case 8:
                    System.out.print("8");
                    break;
                case 9:
                    System.out.print("9");
                    break;
                case 10:
                    System.out.print("A");
                    break;
                case 11:
                    System.out.print("B");
                    break;
                case 12:
                    System.out.print("C");
                    break;
                case 13:
                    System.out.print("D");
                    break;
                case 14:
                    System.out.print("E");
                    break;
                case 15:
                    System.out.print("F");
                    break;
                }
                if(b<16) 
                    flag = false;
            }
            System.out.print(b);
        }
    }

    需倒着看即3C
    需倒着看即3C
    这里写图片描述
    这里写图片描述

    展开全文
  • 二进制流对于我们程序员来说不陌生,但是... * 将二进制数据转换成十六进制字符串 * * @param data 二进制数据 * * @return 十六进制字符串 */ + (NSString *)data2Hex:(NSData *)data { if (!data) { return ni
    二进制流对于我们程序员来说不陌生,但是看起来那是相当困难,近期学习了一些进制的转换,希望对大家有用
    
    /**
     *  将二进制数据转换成十六进制字符串
     *
     *  @param data 二进制数据
     *
     *  @return 十六进制字符串
     */
    + (NSString *)data2Hex:(NSData *)data {
        if (!data) {
            return nil;
        }
        Byte *bytes = (Byte *)[data bytes];
        NSMutableString *str = [NSMutableString stringWithCapacity:data.length * 2];
        for (int i=0; i < data.length; i++){
            [str appendFormat:@"%0x", bytes[i]];
        }
        return str;
    }


    将二进制数据转换成16进制的字符串,


    展开全文
  • 十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 ...
  • c++资源,二进制转化十六进制,希望能帮到你
  • 十进制数转换十六进制数

    千次阅读 2016-08-05 09:45:37
    最近公司的打印机小项目,做了一半,因为公司缺乏资源,只有自己买了一块开发板,2天后才能到,所以只能先搁在...需求:十进制数转换十六进制数 public class Decimal2Hex { public static void main(String[] args)
  • VC 进制转换,可完成以下转换:转换十进制,转换二进制数转换十六进制数转换十六进制二进制,转换一位十六进制为十进制,转换二进制为十六进制,位数不是四的倍数时补齐,每四位二进制数转换为一十六进制...
  • 把任意一个十进制数转换二进制八进制十六进制数的c++源代码
  • 十进制数转换十六进制-Java

    千次阅读 2019-01-15 22:15:17
    不使用Java自带函数怎么将十进制变为十六进制数? Java中存在十六进制和十进制之间直接转换的方法 // 十进制转化为十六进制,结果为1a。 Integer.toHexString(26); // 十六进制转化为十进制,结果26。 Integer....
  • 位运算-将二进制转换成十六进制

    千次阅读 2019-07-15 08:29:21
    二进制数转换成十六进制的表现形式。(就是在获取32位二进制的每四位,拿到二进制的最低四位) 实现 代码实现 public static void BitCalc() { //获取60的二进制 System.out.println(Integer.toBinaryString...
  • java_十进制数转换二进制,八进制,十六进制数的算法
  • 题目:将十进制数转换二进制数十六进制数stack的先进后出原则,符合十进制转二进制转换规则。因此在解题时考虑使用stack。 同时使用string进行结果存储。 注意:1.十六进制数要在开头添加0x。2.string的末尾...
  • Hello,大家好,我是wangzirui32,今天我们将学习如何将十进制转换为二进制,八进制,十六进制。 学习目录1. 转换二进制2. 转换八进制3. 转换十六进制 1. 转换二进制 # 任意进制转换为二进制 new_number = bin...
  • 汇编语言:将ASCⅡ码表示的十进制数转换二进制数/十六进制数 你们好! 这是我的第一个汇编程序的博客,汇编是一个神奇的东西,你深入了解他之后会为他着迷的!!! 题目 将ASCⅡ表示的十进制数字转化为二进制数,...
  • 用数据结构栈实现的数制转换,将十进制数转换二进制,八进制,十六进制
  • 汇编语言:将四位十六进制数转换成二进制数题目要求运行截图编程平台代码实现 题目要求 从键盘接收一个四位的十六进制数,将其转换成二进制数后输出,不考虑错误输入。 运行截图 编程平台 Masm for Windows 集成...
  • //用栈实现进制转换进制转换成二进制数、八进制十六进制数#include<stdio.h>//进制转换 实现十进制转换成二进制数、八进制十六进制数#include<malloc.h>#include<process.h>#define...
  • 二进制转换成十六进制输出的C代码

    万次阅读 2018-09-20 19:10:47
    我自己试着编写代码,思路是把这个8bit的二进制数存放到一个数组里面,分高4bit和低4bit,分别转换成十进制,然后用switch判断这个十进制,转换成对应十六进制数,例如十进制1对应十六进制1,十进制10对应十六进制A...
  • 二进制 二进制就是计算机常用的进制,即逢二进一。例如:1010 八进制 八进制即逢八进一。例如:626 ...十进制就是我们在计算中常用的进制,所以就不再举例(即逢十进一...拿二进制数10010110举例 首先需要3个二进...
  • 因为自带的方法在进行十六进制转为二进制的时候,精度在13位字符后就会出现丢失,为了让精度不丢失就自己根据16进制转换2进制的原理写了两个两个方法 如果长度没有超过13位,可以用parseInt("125adf8",...
  • 本文介绍了一种shell脚本,用来处理十进制数转换成十六进制的方法。现有两个数据文件i0.txt和q0.txt,数据如下: i0.txt q0.txt   935 3297  385 6964  -280 1
  • 将十进制数字转换二进制、八进制、十六进制
  • 二进制 十进制 八进制 十六进制 之间的相互转换的具体实现
  • 超强进制转换工具 二进制 八进制 十进制 十六进制转换
  • 二进制十六进制快速转换

    千次阅读 2018-02-24 08:38:13
    二进制十六进制快速转换—8421法 8+4+2+1 = 15 使用8421法将四位二进制数转换成十六进制数的一位 0000,0000~1111,1111 &lt;===&gt; 0x00~0xFF

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 158,744
精华内容 63,497
关键字:

二进制数怎么转换成十六进制