① 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()的使用、、、试试吧、、、