• C语言:十进制进制转换为其他进制(思想:查表法)


    //

    //  main.c

    //  Hex conversion

    //

    //  Created by ma c on 15/7/22.

    //  Copyright (c) 2015年. All rights reserved.

    //  要求:十进制向任意进制之间的转换(查表法)。

     

    #include <stdio.h>

    //十六进制的转换

    void ToHex(int num)

    {

        int temp;

        char chs[8];//定义一个临时容器,长度为8,8X4=32位比特

        int pos=8;  //定义一个索引

        char ch[] = {'0','1','2','3',

                     '4','5','6','7',

                     '8','9','a','b',

                     'c','d','e','f'};

        printf("%d的十六进制是:",num);

        while(num!=0)

        {

            temp = num & 15;

            chs[--pos]= ch[temp];     //将查表中的数据存放到临时容器中。

            num = num >> 4;           //向左移动次低四位

        };

        for(int x=pos;x<8;x++)

        {

            printf("%c",chs[x]);

        }

        printf(" ");

    }

    //八进制的转换

    void ToOct(int num)

    {

        int temp;

        char chs[11];//定义一个临时容器

        int pos=11;  //定义一个索引

        char ch[] = {'0','1','2','3',

                     '4','5','6','7',

                     '8','9','a','b',

                     'c','d','e','f'};

        printf("%d的八进制是:",num);

        while(num!=0)

        {

            temp = num & 7;

            chs[--pos]= ch[temp];     //将查表中的数据存放到临时容器中。

            num = num >> 3;           //向左移动次低三位

        };

        for(int x=pos;x<11;x++)

        {

            printf("%c",chs[x]);

        }

        printf(" ");

    }

    //二进制的转换

    void ToBinary(int num)

    {

        int temp;

        char chs[32];//定义一个临时容器

        int pos=32;  //定义一个索引

        char ch[] = {'0','1','2','3',

                     '4','5','6','7',

                     '8','9','a','b',

                     'c','d','e','f'};

        printf("%d的二进制是:",num);

        while(num!=0)

        {

            temp = num & 1;

            chs[--pos]= ch[temp];     //将查表中的数据存放到临时容器中。

            num = num >> 1;           //向左移动次低一位

        };

        for(int x=pos;x<32;x++)

        {

            printf("%c",chs[x]);

        }

        printf(" ");

    }

     

    int main(int argc, const char * argv[])

    {

        ToHex(60);

        ToOct(60);

        ToBinary(60);

        printf(" ");

        return 0;

    }

     

  • 相关阅读:
    八皇后问题--------------------递归回溯
    排序算法06------------------------插入排序
    无重复字符最长子串----------------滑动窗口法
    排序算法05------------------------堆排序(图解)
    排序算法04------------------------归并排序
    图形学基础(一)光栅图形学_下:剪裁
    计网Top-Down 抄书笔记(二)——应用层
    图形学基础(二)图形变换_下:3D 平行投影
    图形学基础(二)图形变换_上:2D 基本变换/复合变换
    图形学基础(一)光栅图形学_上:画直线/圆、区域填充
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4695437.html
Copyright © 2020-2023  润新知