1樓:匿名使用者
由於我設計的時候是定義了一個位元組的結構體,所以儲存的只能是以位元組數為單位的,任何位數比較困難,可以解決8的倍數位的,其它的不行,下面是程式,如果要你那種要求那就得另外想演算法,不過一般也沒必要算任意位數吧,就算是記憶體他也是以位元組為單位進行編碼的
不需要計算的演算法:用位段處理,自已好好看看,估計沒有比這個演算法更高效的了
#include
#include
typedef struct
bit;
void dec2bin(int *a,char *b,int n) //儲存n個位元組}}
int main()
,i,n;
char b[200];
memset(b,2,200);
printf("請輸入要轉換的位元組數:\t");
while(scanf("%d",&n),n<=0||n>sizeof(*a))
printf("請重新輸入位元組數\n");
dec2bin(a,b,2);
for(i=0;b[i]!=2;i++)
printf("%d,",b[i]);
printf("\b \n");
return 0;}
2樓:匿名使用者
#include
#include
void dec2bin(int a, int b)}}int main()
;int c[24];
int i;
dec2bin(a,c);
for(i=0;i<24;i++) printf("%d,",c[i]);
3樓:匿名使用者
用bitset好了
#include
#include
using namespace std;
void main()
;string b;
int i;
for(i=0;i<3;i++)
b+=bitset<8>(a[i]).to_string();
cout<
c++編寫程式將十進位制數轉化為八位二進位制輸出(要求用main)
一個簡單的c++問題,輸入一個8位二進位制數,將其轉換為十進位制數輸出。
4樓:鮑口恥握
/*首先要知道2轉10進位制的規則:
該位數值(1或0)乘以二的該位位數位數減一次方
比如:二進位制10,轉10進位制則是1*2^1+0*2^0
二進位制110,轉10進位制則是1*2^2+1*2^1+0*2^0
……這個程式中的power函式作用就是用於計算次方
解釋下power函式:
power(double x,int n);
比如2的3次方,則power(2,3)返回2的3次方的值
有了這個函式的話,計算2進位制轉10進位制就非常簡單了
只需要判斷8位數中的哪一位是1,是1的話就加上2的位數-1次方就可以了
比如8位二進位制是11000111
則十進位制value=power(2,7)+power(2,6)+power(2,2)+power(2,1)+power(2,0);
這個步驟可以用迴圈得到
很簡單吧
*/#include
using namespace std;
double power(double x,int ); //宣告power函式,因為power的定義在main之後,main函式要呼叫的話就必須先宣告
void main(void)
//輸出結果
cout<<"decimal calue is "<
}double power(double x,int n)
5樓:sym_東方不敗
開始定義的i是for迴圈中的迴圈節,作為判斷條件使用;
cin的操作在for迴圈中已經進行了8次了
6樓:愛好_問問
開頭定義的 i 和for裡面的 i 是一樣的
cin的操作已經迴圈八次了呀,因為它在for迴圈裡,for(i=7;i>=0;i--)一共迴圈8次
7樓:
兩個i一樣,cin的迴圈了8次啊
二進位制轉十進位制 輸入一個8位二進位制數,將其轉換為十進位制數輸出。c++程式設計
8樓:匿名使用者
#include
using namespace std;
//計算x的n次方
double power (double x, int n);
int main()
cout<<"output:\n";
cout << "decimal value is " << value << endl;
return 0;
}/**********begin****************/double power (double x, int n){int i;
double d=1;
for(i=0;i
"由鍵盤輸入一個小於256的十進位制正整數,然後將該數轉換成八位的二進位制數形式輸出。"的c++程式
9樓:匿名使用者
main()
10樓:
#include "stdio.h"
int main()
else
printf("0");
i = i % j;
j = j/2;
}printf("%d", i);}
11樓:匿名使用者
#include
void tobin(char x)
for(i = 0; i < 8; i++)printf("\n");
} int main()
12樓:匿名使用者
#include
using namespace std;
int main()
cout << endl;}
c++中十進位制和二進位制的轉換問題
13樓:匿名使用者
負數是按照二進位制補碼的形式儲存的
補碼的把法就是絕對值對應的二進位制碼取反加一
24的二進位制碼是 0001 1000
取反是 1110 0111
加一 1110 1000 代表-24
那麼 24 + (-24) 剛好就是 0000 0000, 如果到按無符號數來說和是256
這樣的好處是正負數加加減法和無符號數的加減法規律一樣
計算機在儲存資料的時候是不分什麼型別的
例如計算有符號數 24 + (-24) 和無符號數 24 + 232時
計算機cpu裡面都是操作二進位制的 0001 1000 + 1110 1000
8位結果顯然都是 0000 0000
程式是人為地認為
在做符號數運算的時候是正負抵消結果為0,在做無符號數時是計算溢位
14樓:沁水依依
int型別佔4個位元組,所以-104在記憶體實際表示為:11111111 11111111 11111111 10011000
char佔一個位元組,所以前面3個位元組丟失,只接收到 10011000一個負數轉成二進位制是求它的補碼:求得它對應正數的二進位制,按位取反再加1
要從一個二進位制求對應的整數,一般會告訴你這是正數還是負數吧最後一個問題,你存放一個數,不是第一件事就是定義它的型別嗎,當然是根據你定義的型別來判斷第一位是否是符號位
15樓:禮翼跆拳道
計算機 十進位制和二進位制的轉換
什麼是八位二進位制,八位二進位制是什麼意思
八位二進位制就是由8個bit表示的二進位制碼,可以表示2 8 256個狀態。例如01011010就是一個八位二進位制碼。八位二進位制是什麼意思 八位二進位制就是8個按順序排列的二進位制數。例如 11111000,00000001,00000101等。進位制 binary 在數學和數位電路中指以2為基...
二進位制八進位制十進位制十六進位制的不同的數怎麼
按權,統一轉換我們習慣十進位制進行比較.比如 10101010 2 260 256 8 174 320 10 320 a12 16 2578 是都要轉換成為十進位制嗎?不用,不同進位制相同資料,進位制越大數越大 一個相同的數,16進位制最大,10進位制第二,8進位制第三,2進位制第四 轉換成相同 統...
二進位制八進位制十六進位制十進位制之間怎樣相互轉化
1 二進位制數 八進位制數 十六進位制數轉十進位制數 有一個公式 二進位制數 八進位制數 十六進位制數的各位數字分別乖以各自的基數的 n 1 次方,其和相加之和便是相應的十進位制數。個位,n 1 十位,n 2.舉例 110b 1 2的2次方 1 2的1次方 0 2的0次方 0 4 2 0 6d 11...