用堆栈实现数制转换(十进制转二进制)

    /*************************************stack.h********************************/
    #define MAXSIZE 32
    #define OVERFLOW -1
    #define ERROR -2
    #define DATATYPE int
    
    typedef enum{FALSE, TRUE} BOOL;
    
    typedef struct
    {
          DATATYPE * data;
          int top;
    }STACK;
    
    void initStack(STACK * ps)
    {
         ps->data = (DATATYPE *)malloc(MAXSIZE*sizeof(DATATYPE));
         ps->top = -1;
    }
    
    BOOL empty(STACK * ps)
    {
         if (ps->top == -1)
         {
              printf("/nstack empty./007");
              return TRUE;
         }
         return FALSE;
    }
    
    BOOL full(STACK * ps)
    {
         if (ps->top == MAXSIZE -1)
         {
              printf("stack full./007/n");
              return TRUE;
         }
         return FALSE;
    }
    
    void push(STACK * ps, DATATYPE element)
    {
         if (!full(ps))
         {
             ps->data[++ps->top] = element;
         }
    }
    
    DATATYPE pop(STACK *ps)
    {
         if (empty(ps))
         {
              return OVERFLOW;
         }
         return ps->data[ps->top--];
    }
    
    DATATYPE getTop(STACK * ps)
    {
         if (!empty(ps))
            return ps->data[ps->top];
         return ERROR;
    }
    
    void clearStack(STACK * ps)
    {
         ps->top = -1;
    }
    
    void destroy(STACK * ps)
    {
         free(ps->data);
    }
    
/*****************************conver.c******************************/
    #include <stdio.h>
    #include <stdlib.h>
    #include "stack.h"
    
    int main()
    {
         STACK stack;
         int num;
         int temp;
         initStack(&stack);
         printf("please input a number:");
         scanf("%d", &num);
         while(num)
         {
              push(&stack, num%2);
              num = num/2;
         }
         while(!empty(&stack))
         {
               printf("%d", pop(&stack));
         }
         return 0;
    }
时间: 2024-10-29 19:12:54

用堆栈实现数制转换(十进制转二进制)的相关文章

汇编语言第一节课:数制转换,真值和补码

汇编语言第一节课内容总结 十进制数对应的二进制数和十六进制数 进制转换 十进制转换为二进制和十六进制 后缀字母D为十进制,B为二进制,H为十六进 整数部分:除2或16取余倒排 小数部分:乘2或16取整正排 二进制和十六进制转换为十进制 小数点之前的从2的指数从0开始, 这里要记住一个公式: 二进制转换为十六进制 十六进制转换为二进制 ASCII码表 真值和机器数 原码表示法 反码表示法 补码表示法 补码对于0的表示形式只有一种:是因为负零表示0是原本的二进制反码为100000000但是这是8位二

C++进制转换(十进制转二进制、八进制、随意进制)

十进制转二进制: //十进制转二进制 #include<iostream> using namespace std; void printbinary(const unsigned int val) { for(int i = 16; i >= 0; i--) { if(val & (1 << i)) cout << "1"; else cout << "0"; } } int main() { prin

十进制与二进制,八进制,十六进制的转换

(一)数制       计算机采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径,节省设备等优点,为了便于描述,又常用八.十六进制作为二进制的缩写.特点: (1)逢n进一,n是每种进位进数制表示一位数所需要的符号数目为基数. 二进制:逢二进一,借一当二 八进制:逢八进一,借一当八 十六进制:逢十六进一,借一当十六 (二)数制转换       不同进位计数制之间的转换原则:不同进位计数制之间的转换是根据两个有理数如相等,则两数的整数和分数部分一定分别一定相等的原则进行

十进制、二进制、八进制、十六进制之间的转换[基础]

今天翻了一本计算机基础的书籍,其中十进制.二进制.八进制.十六进制之间的转换挺有意思的,也容易犯糊涂,特温故而知新. 十进制数制系统 十进制数制系统包括 10 个数字:0.1.2.3.4.5.6.7.8.9 基为:10        逢十进一,如3+7=10,20+80=100 二进制数制系统 计算机中使用二进制表示数据 二进制包括两个符号:0和1 二进制逢二进一:(1+1)2=(10)2 二进制的基为2 示例:1000101100101101 八进制数制系统 用于缩短二进制的数字长度 八进制基

DS队列+堆栈--数制转换

题目描述 对于任意十进制数转换为k进制,包括整数部分和小数部分转换.整数部分采用除k求余法,小数部分采用乘k取整法例如x=19.125,求2进制转换 整数部分19, 小数部分0.125 19 / 2 = 9 … 1 0.125 * 2 = 0.25 … 0 9 / 2 = 4 … 1 0.25 * 2 = 0.5 … 0 4 / 2 = 2 … 0 0.5 * 2 = 1 … 1 2 / 2 = 1 … 0 1 / 2 = 0 … 1 所以整数部分转为 10011,小数部分转为0.001,合起来

二进制转换十进制 算法解析

java里面是有进制间互换现成的方法的: public class 十进制与各进制的相互转换 { public static void main(String[] args){ //java已经实现的机制:十进制转换为二进制 int decimal = 10; System.out.println("十进制数:"+decimal+",转换为二进制:"+Integer.toBinaryString(decimal)); System.out.println("

十进制与二进制之间的自由转换

#include <stdio.h>#include<stdlib.h>int main(){    int Type,a,b[10],i=0,c=0;    printf("请输入转换类型 1:十进制转二进制:2:二进制转十进制;\n");    scanf("%d",&Type);    printf("请输入原数据\n");    scanf("%d",&a);    switch

十进制与二进制转换

用C#代码实现二进制与十进制的互相转换 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

二进制转换十进制、十六进制

二进制值: 半字节中各位的位值               字节中各位的位值 8 4 2 1                            128 64 32 16 8 4 2 1 二进制到十进制转换表: 二进制值                                十进制值 10000000                                128 11000000                                192 11100000