如題
如何輸入一8bite的二進位
轉換成10進位輸出
課本有提到10進位轉成8or16進位
我常是從中找出關鍵也找不出來
請問各位高手 能只點一下嗎@@?
不必將所有程式打出來 指點一下關鍵的所在
然後我在自己嘗試
謝謝!!
2007-10-19 17:53:29 · 3 個解答 · 發問者 Anonymous in 電腦與網際網路 ➔ 程式設計
程式如下..
基本原理是二進位時, 第一位是 1(2的0次方) , 第二位是 2(2的1次方), 依此類推第8位是2的7次方...
即使是8位是也是類似的...第一位是1(8的0次方), 第二位是8(8的1次方), 第8位就是8的7次方...
用我們最熟的10進位, 原理一樣...第一位是1(10的0次方), 第二位是10(10的一次方), 第8位就是10的7次方.
#include "stdafx.h"
#include
#include "math.h"
using namespace std;
#define DIGIT 8 //總共可輸入8位數, 這程式沒檢查數字, 所以一定要輸入8位數才能正常運作.
#define BASE 2 //使用2進位, 改成8的話就變成8進位, 改成10就是10進位.
int _tmain(int argc, _TCHAR* argv[])
{
char cInput[DIGIT]={0}; //負責接收輸入的資料
cin >> cInput; //我沒有檢查輸入的值是否有超過.. 所以2進位時只能輸入0,1不然會錯
//使用loop把array的資料讀出來計算..
//因為array中的值是字元, 所以我減掉'0', 這樣就可以把字元轉成實際的數字了..
double iResult = 0;
for(int i=0; i < DIGIT; i++ )
{
iResult = (cInput[i]-'0')*pow ( (double)BASE ,DIGIT-i-1);
}
cout << (int)iResult;
return 0;
}
2007-10-20 02:09:49 · answer #1 · answered by 穿越時空的旅人 3 · 0⤊ 0⤋
//C++程式設計 如何把2進位轉成10進位
#include
#include
#include
#include
using namespace std;
int btod(string b)
{
const char *ch=b.c_str();
int value=0;
for(int i=0;i<(int)b.length();i++)
{
value+=(ch[i]-'0')*(int)pow(2.0,(int)b.length()-i-1);
}
return value;
}
int main(int argc, char** argv){
//=====START=====//
string b;
cout<<"Input a binary: ",cin>>b,cout<<"Dec="<
system("PAUSE");
return 0;
}
2007-10-20 17:14:11 · answer #2 · answered by Big_John-tw 7 · 0⤊ 0⤋
首先你要知道2進制8位元要如何轉成10進制
例如 1010 0111 這是2進制=2^7*1+2^6*0+....+(2^0)*1
而2^7為2的7次方 所以1010 0111的十進制為128+32+4+2+1=167
所以
2的7次方乘上第8個位元+
2的6次方乘上第7個位元+
2的5次方乘上第6個位元+
2的4次方乘上第5個位元+
2的3次方乘上第4個位元+
2的2次方乘上第3個位元+
2的1次方乘上第2個位元+
2的0次方乘上第1個位元= 十進制
希望這個對你有幫助
2007-10-19 18:41:42 · answer #3 · answered by no nickname 2 · 0⤊ 0⤋