编写一个C程序,实现以下功能:编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101。在main函数中输入整数n,调用函数,输出它的二进制
題目要求:
編寫一個C程序,實現以下功能:
//編寫一個函數decTobin(int n),該函數能將一個十進制數n轉換成二進制數,輸入13 輸出 1101。
//在main函數中輸入整數n,調用函數,輸出它的二進制數。
二進值怎么來的?為什么要定義二進值?
要解答這個問題,從計算機的起因開始說起,我的涉獵不多,可能知識略有缺漏。
我們知道,生活之中總是存在著只有兩面的事物,開關中的開與關,們或非,事物判斷的對與錯,而在物理中,存在著正電和負電的知識。我們知道,計算機是需要供電的,恰巧的是,通過0和1來表示正電和負電,或許是計算機甚至人類數學上最美的語言了。計算機只讀得懂0,1,早期科學家用0和1構建起整一個計算機的科學王國。
二進值其實和我們熟絡的十進制沒有什么不同,但這里需要引出一個概念,加權運算,我們先來復習一下十進制的數計算法則。
以15舉例,是不是十位有1,個位有5?根據加權運算:1*10一次方?+ 5*10零次方,自然等于15.
再以1605為例,根據加權運算:1*10三次方+6*10二次方+0*10一次方+5*10零次方。自然等于1605.
因為是10進制,所以所有的權是以10來表示,如果是2進制,大家想想,是不是該用2來表示權?
明白了加權運算的原理
再來看二進制:
二進值1101轉換成十進制 根據加權運算; 1*2三次方+1*2二次方+0*2一次方+1*2零次方,結果為8+4+0+1 = 13
那十進制轉換成二進制是怎么操作呢,這里說起來有點麻煩,2進制只有兩種可能結果0或1,人們規定,當一個數能被二整除的時候,這個數是二的倍數,這不就代表進位的意思嘛,舉個例子,60能被10整除,所以60是由10進位過來的,而二進制的進位是逢二進一,只要你是二的倍數,那肯定就會進一。所以規定整數除2,如果能被除盡,就記‘0’,否則就記‘1’
代碼如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define MAX 33 /*編寫一個C程序,實現以下功能: 編寫一個函數decTobin(int n),該函數能將一個十進制數n轉換成二進制數,輸入13 輸出 1101。 在main函數中輸入整數n,調用函數,輸出它的二進制數。 */ char s[MAX]; void decTobin(int n) {int i = 0;while(n > 0){if (n % 2 == 1) {s[i] = 1;i++;}else {s[i] = 0;i++;}n /= 2;}for(int j = i - 1;j>=0;j--)printf("%d", s[j]); } int main() {int n;scanf("%d", &n);decTobin(n); }總結
以上是生活随笔為你收集整理的编写一个C程序,实现以下功能:编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101。在main函数中输入整数n,调用函数,输出它的二进制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么叫做罗列式_极简罗列法怎么写作文
- 下一篇: python中int input_pyt