i值被改变导致死循环
#include <stdioh>#include <stringh>
int main(void)
{
int a[20],i,k;
for (i = 1; i < 257; i++)
{
int n = i;
for (k = 0;; k++)
{
a[k] = n % 2;
n = n / 2;
if (n == 0)
{
for (; k >= 0; k--)
printf("%d", a[k]);
printf("\t");
break;
}
}
}
system("pause");
return 0;
}
char s [128]是说定义了一个名叫s的字符型数组,这个数组有128个元素(也就是有128个char型变量所占用的字节)。通常,一个char型变量只占一个8位二进制字节,所以char s [128]是为字符变量s在内存中划分了128个字节,编号为s[0]到s[127]。这些字节可以用s的下标访问,如:s [0]表示第一个,s [1]表示第二个……s [127]表示最后一个!
看我写的这个函数能不能解决你的问题?
# include "stdafxh"
# include "stdioh"
# include "stringh"
# include "stdlibh"
# include "conioh"
# include "mathh"
void DecDoubletoB(void){
long double n_Dec=00,temp=00;
char A_Dec[20]="",B_Str[33]="",cx[2]="",i,j,pt=NULL;//
printf("Please input a Decimal number!\nn_Dec=");
j=20;
for(i=0;i<j;){
if((cx=getch())==0xD && i) break;
else if(cx==0x8 && i){
printf("\b%c\b",' ');
if((A_Dec+--i)==''){
pt=NULL;
j=20;
}
(A_Dec+i)=NULL;
continue;
}
else if(!pt && i==9 && cx!='') continue;//
if(cx>='0' && cx<='9' || !pt && cx==''){
strcat(A_Dec,cx);
printf("%c",cx);
if(cx==''){
pt=A_Dec+i+1;
j=i+10;
}
i++;
}
}
for(i=0;;i++){//
if((A_Dec+i)=='' || (A_Dec+i)==NULL) break;
n_Dec=10n_Dec+(A_Dec+i)-'0';
}
printf("\n\n\t%s(10)------>%s",A_Dec,ltoa((long)n_Dec,B_Str,2));//Output integer
B_Str=NULL;
if(pt){//
n_Dec=00;
for(i=0;;i++){//
if((pt+i)==NULL) break;
temp=(pt+i)-'0';
for(j=-1;j<i;temp/=100,j++);
n_Dec+=temp;
}//
for(i=0;i<32;i++){//
cx='0';
if((n_Dec=2)>=10){
cx+=(char)(n_Dec);
n_Dec-=10;
} //
strcat(B_Str,cx);
if(!n_Dec) break;
}
}
for(i--;i>=0;i--)//To delete '0' after binary fraction
if((B_Str+i)=='0') (B_Str+i)=NULL;
else break;
printf(pt "%s(2)\n\n" : "%s(2)\n\n",B_Str);//Output binary fraction
}
int main(int argc, char argv[]){
DecDoubletoB();
return 0;
}
我知道一点 计算机是通过识别开关两种概念
而2进制数十有 0 和1组成的
只能说它计算的时候是把数字转化成0110100010 等等的2进制数来运算的
而不是用2进制编写的,你要是让个程序员10 01 的在那敲,那还不累死啊
现在把好多种可能 做成一个命令,用英文字符来做名称,需要用到这个命令的时候只需输入命令代码 而不是输入2进制数了
好多种命令集合到一起,就形成了程序,这些命令都是非常严谨的,因为计算机是死的,一步一步的按照命令去做,所以程序又有好多格式
常见的有C语言 来编写程序
c语言编程将十进制转化为2进制可按手工转换规则进行程序转换。
整数占四个字节,每字节8位,共32位。所以,可以定义一个32位的数组来存储转换结果。
循环将整数进行除2取余数,余数存储到数组中。
当整数整除为0时,结束循环
逆序输出数组,得到转换结果
参考代码:
#include <stdioh>
void main()
{
int c[32],i=0,n;
scanf("%d", &n) ; //输入待转换整数n
do {
c[i++]=n%2;
n/=2;
} while(n!=0) ;
for(i--;i>=0;i--)
printf("%d",c[i] );
printf("\n");
}
用数组模拟就行。
思路:
1、将输入转化成二进制数,逆序存入数组中。
2、用两数组模拟四则运算,并将运算的结果存入第三个数组中。
3、逆序输出第三个数组。
希望对你有帮助!
c语言不能直接表示二进制,没有数字前缀表示。
例子如下:
假设有一个
int
类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000
00000000
00000000
00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
扩展资料
进制是一种计数的方式,常用的有二进制、八进制、十进制、十六进制。任何数据在计算机内存中都是以二进制的形式存放的。
我对进制的个人理解,二进制数是以2为计算单元,满2进1位的数;八进制数是以8为计算单元,满8进1位的数。
对于任何一个数字,我们都可以用不同的进制来表示,比如,十进制数12,用二进制表示为1100,用八进制表示为14,用十六进制表示为0xc。
以上就是关于C语言1到256十进制转二进制程序全部的内容,包括:C语言1到256十进制转二进制程序、二进制转换、二进制可以做哪些程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)