1. 程式人生 > >C語言實現十進位制轉換為二進位制

C語言實現十進位制轉換為二進位制

/*
 * 檔名:二進位制轉換.c
 * 功能描述:把10進位制數轉換為二進位制數
 * 編寫人:王廷雲
 * 編寫日期:2017-1-10
*/
#include <stdio.h>

#define  NR (sizeof(int)*8)  // 二進位制位的個數

void deciToBin(int num);	 // 十進位制轉換為二進位制函式宣告

/* 主函式 */
int main(void)
{
    int num;

    fprintf(stdout, "請輸入一個正整數:");

    /* 獲取並檢查使用者輸入 */
    while (1)
    {
        if
(fscanf(stdin, "%d", &num) != 1) { fprintf(stderr, "輸入錯誤!請重新輸入:"); while (getchar() != '\n'); // 去掉多餘的非法字元 continue; } else if (num < 0) // 輸入的數不能為負數 { fprintf(stderr, "請輸入錯誤!請輸入正整數:"); continue
; } else break; } fprintf(stdout, "對應二進位制為:"); #if 1 /* 方法一: 不使用遞迴 */ char bitArr[NR]; int i = -1; /* 演算法:棧的數學模型 */ do { i += 1; bitArr[i] = num % 2; num /= 2; } while (num != 0); /* 逆序列印 */ for (i ; i >= 0; i--) {
fprintf(stdout, "%d", bitArr[i]); } fputc('\n', stdout); #else /* 方法二: 使用遞迴 */ if (num == 0) { fprintf(stdout, "0\n"); } else { deciToBin(num); // 呼叫第歸函式 fputc('\n', stdout); } #endif return 0; } /* * @函式名:deciToBin * @函式功能:實現十進位制轉換為二進位制 * @引數:需要轉換的十進位制整數 */ void deciToBin(int num) { /* 第歸結束條件 */ if (num == 0) { return; } /* 第歸呼叫 */ deciToBin(num/2); /* 逆序列印 */ fprintf(stdout, "%d", num%2); }

相關推薦

C語言實現十進位制轉換二進位制

/* * 檔名:二進位制轉換.c * 功能描述:把10進位制數轉換為二進位制數 * 編寫人:王廷雲 * 編寫日期:2017-1-10 */ #include <stdio.h> #

C語言實現十進位制轉換二進位制

#include<stdio.h>  //現定義一個數組,然後把用2整除這個數,得到商和餘數,再用商繼續除以2,直到值為0結束迴圈, //然後把這些餘數放在陣列中,輸出即可; int main() { int n ,temp,s[100],i=0;printf(

C語言程式實現十進位制轉換二進位制

題目: 寫一個函式,輸入一個10進位制數,輸出它的2進位制,例如:輸入9,輸出1001 思路: 十進位制數轉換為其他進位制時,轉換成幾進位制就除以幾進位制求餘。 程式碼: #include "stdio.h" #define N 100 int main() {

用位運算實現十進位制轉換二進位制

程式碼如下: 1 #include <iostream> //將十進位制數轉化為二進位制數,位運算的取位操作 2 using namespace std; 3 int main() 4 { 5 unsigned short i; 6

C語言實現十進位制數轉二進位制數的演算法

因為C語言的printf函式的格式化輸出只支援八進位制和十六進位制的輸出,所以二進位制需要自己實現。 這其中有幾個難點,一是演算法,二是資料結構。可以用二不斷除被除數取餘數,倒序輸出,還可以像我這麼想,用位運算和移位操作進行輸出,因為本身在記憶體中就是二級制的形式存放的,可

C++實現十進位制轉換任意進位制

十進位制數在C++中用什麼表示? 一個十進位制數,在程式中用什麼方式轉換為其他進位制,和在數學中的思路一樣嗎?? 輸出的結果用什麼表示比較方便? 下面的程式中digit思考為什麼要用靜態變數? #include <iostream> #include <

C語言實現十進位制二進位制

程式碼如下: # include <stdio.h> int main() { int i, n = 0, b[16]; scanf("%d", &i);

十進位制轉換二進位制、八進位制、十六進位制

將十進位制轉換為其它進位制時比較複雜,整數部分和小數部分的演算法不一樣。 1) 整數部分 十進位制整數轉換為 N 進位制整數採用“除 N 取餘,逆序排列”法。具體做法是: 將 N 作為除數,用十進位制整數除以 N,可以得到一個商和餘數; 保留餘數,用商繼續除以 N,又得到一個新的商和餘數;

Python 十進位制轉換二進位制 高位補零

這裡需要使用內建函式''.format() 高位補零 >>> a = 2 >>> b = '{:08b}'.format(a) 輸出結果為八位二進位制,且高位補零。 高位不補零 >>> b = '{:8b}'.for

Python下十進位制轉換二進位制

前兩天,在讀高中的姨弟找我,說他資訊考試有一道題不會,要在Python下把十進位制轉換為二進位制,問我會不會,我沒學過Python,C只學會了皮毛,靠著一丁點對程式設計的瞭解,網上查了查,總算拼湊出來了。PS:Python下是有現成函式的,只不過不符合題目要求,所以沒用程式碼

C語言中將數字轉換字串的方法

C語言提供了幾個標準庫函式,可以將任意型別(整型、長整型、浮點型等)的數字轉換為字串。以下是用itoa()函式將整數轉換為字串的一個例子: # include <stdio. h> # include <stdlib. h> void main (vo

使用移位操作、位與操作把十進位制轉換二進位制

針對上篇文章c++的寫法,改寫成java的寫法,測試發現有下面兩種,但是現在我還不能完全理解,暫時記錄,後面理解後再詳細註解。 public class BaseTest { public stat

c語言time(0)轉換當前時間

時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數 在C語言中可以通過time()函式獲取到當前的秒數 引數為0則函式返

C/C++語言實現十進位制正整數轉化為2-16進位制的數並輸出

<h3>/<span style="font-size:18px;">/將一個十進位制的正整數轉化為H進位制並輸出--拓展 在此先研究對於正整數的進位制轉換 以及2-16的進位制與十進位制的轉換 #include <IOSTREAM> using namespace s

資料結構|用棧實現十進位制轉換二進位制(實驗3.5)

一、實驗目的 1、熟練掌棧的結構特點,掌握棧的順序儲存結構和實現。 2、學會使用棧解決實際問題。 二、實驗內容 1、自己確定結點的具體資料型別和問題規模,建立一個順序棧,實現棧的壓棧和出棧操作。 三、實驗步驟 1、依據實驗內容分別說明實驗程式中用到的資料型別的

c語言實現輸入和n的迴文數

#include<stdio.h> int main() { int a,b,c,d,e,f,n; scanf("%d",&n); if(1<=n<=54) { f

用遞迴函式實現十進位制轉換十六進位制輸出

   遞迴函式的定義,不應出現無終止的遞迴呼叫。而應定義為有限次數、有終止的遞迴呼叫函式。       對於一個問題,只要能夠知道遞迴定義式,及邊界條件(即遞迴終止的條件),就可以編寫一個遞迴函式。 #include <stdio.h> #define BASE

C語言實現1個無符號整型的十進位制數,按照要求轉換二進位制並輸出

輸入1個無符號整型的十進位制數,將其轉換成二進位制,並輸出。(6分) 題目內容: 從鍵盤輸入1個小於65536的無符號整型的十進位制數,將其轉換成二進位制,並輸出。 具體要求完成的功能如下: 1)如輸入負數,則顯示 “請輸入非負數” 2)如超過65535,則顯示

c語言實現二進位制轉換十進位制

// 二進位制轉十進位制.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdio.h" int xn(int num,int n)//

二十四進制編碼串轉換32位無符號整數(C語言實現

bool while open 參數錯誤 hint div 第一個字符 bsp opened typedef int BOOL; #define TRUE 1; #define FALSE 0; #define UINT_MAX 0xffffffff