① c語言的十進制數轉換八進制演算法有哪些
原發布者:血戰長空wlg
題目:數制轉換問題1.需求分析將十進制數N轉換成八進制數是計算機實現計算的基本問題,解決方案很多,其中最簡單的方法是除8取余法。1)本方案採用順序棧的方式模擬整個過程。其原理如下:例子:(1348)10=(2504)從中可以看出,最先產生的余數4是轉換加過的最低位,這正好符合棧的「後進先出」的特性。2)功能:從鍵盤輸入任意一個非負十進制整數,輸出與其等值的八進制數;若輸入一個負數,則顯示輸入錯誤,請重新輸入。3)測試數據:(1348)10=(2504)8,(0)10=(0)8,(-1234)10輸入數據錯誤。2.概要設計定義順序棧類型,由鍵盤輸入非負十進制整數N,執行以下循環操作:N%8入棧,N=N/8,直至N=0。主要函數由建立空棧Initsqstack()、入棧Push()、出棧Pop()和main()函數組成。過程中函數調用關系圖如下:3.詳細設計1)數據類型定義structSqstack{int*bottom;int*top;intmaxsize;};2)系統主要子程序詳細設計A.建立空棧intInitsqstack(Sqstack&s){s.bottom=(int*)malloc(sizeof(int)*20);if(s.bottom){s.top=s.bottom;
② 怎麼用C語言將十位二進制轉換為八位二進制
十位轉化為八位?如果第九第十位是零的話直接去掉就ok了,不然的話,還真沒有辦法把一個十位數轉化為八位數。這個問題就好像是你能把1000用三位數表示嗎一樣。
比如說,0010000000 這個十位二進制數(十進制是128),按你的要求變成八位,只需去掉前面兩個零,變成10000000即可,仍是128,大小沒變
二進制→十進制 比如,0010000000=0x2^9+0x2^8+1x2^7+0x2^6+0x2^5+0x2^4+0x2^3+0x2^2+0x2^1+0x2^0=128
③ 用C語言怎麼把一個位元組分成八個位
一個位元組有8位,可以用原來的值和0x3f(就是0011
1111b)按位與,即可得到後六位。
前兩位就是和0xc0按位與,然後右移六位。
unsigned
char
a=0x34;
unsigned
char
high=a&0xc0>>6;
unsinged
char
low=a&0x3f;
④ 請問在C語言中,如何將一個十進制數轉化為八位二進制的數
我就懶得敲了,轉一個網友的回答:
從最低位(最右)算起,位上的數字乘以本位的權重,權重就是2的第幾位的位數減一次方。比如第2位就是2的(2-1次)方,就是2;第8位就是2的(8-1)次方是128。把所有的值加起來。
2(1-1)代表2的0次方,就是1;其他類推
比如二進制1101,換算成十進制就是:1*2(1-1)+0*2(2-1)+1*2(3-1)+1*2(4-1)=1+0+4+8=13
⑤ C語言十進制怎麼轉換八進制,求詳細描述,不要編譯器運行的結果
十進制轉任意進制一般都是用除基取余法,比如說102轉8進制,
102除以8,商12,餘6
12除以8,商1,餘4
1除以8,商0,餘1
商為0的時候即轉換完成,將余數逆序連接起來就是結果,即10進制的102轉8進制為146
將上述過程轉為代碼就是
#include <stdio.h>
int main()
{
int number = 102, i=0, div, rem;
int system = 8;//8進制
char s[50];
while (number) //除基取余法
{
div = number / system; //商
rem = number % system; //余
s[i++] = rem <= 9 ? rem + '0' : rem - 10 + 'A';
number = div; //上次的商賦給number
}
for (--i; i >= 0; i--)
printf("%c", s[i]);
printf("\n");
getchar();
return 0;
}
⑥ c語言中如何使最後的輸出字元串為八位
#include <stdio.h>
#include <stdlib.h>
void main()
{
int array_a[64];
int i;
char string[16];
for(i = 0; i < 64; i++)
{
printf("請輸入一個數:");
scanf("%d",&array_a[i]);
itoa(array_a[i],string,2);
printf("\t該數轉為二進制是:[%s]\n",string);
}
}
主要在itoa()的使用、、、試試吧、、、