在C语言中,如何让计算机输出一个整数的二进制形式,

在C语言中,如何让计算机输出一个整数的二进制形式,,第1张

在C语言里没有这样的函数,只能自已编写一个这样的函数
大概思路
void Fun(int num)
{
if(num ==1 || num == 0) //等于0 或是 1时,直接输出
{
printf("%d",num);
}
else
{
while(num/2>0)
{
printf("%d",num%2); //取余
num = num/2; //取整
}
}

}

用函数
int
num
=
1032;
char
outstring[100];
itoa(num,
outstring,
2);
printf(outstring);
第3个参数表示所用的进制,同理可以改成其它进制
Good
Luck!

#include<stdlibh> 
#include<stdioh>
void main(){
int number=43;char string[100];
itoa(number,string,2); 
printf("原数=%d 二进制数=%s\n",number,string);  
}

这个可以满足你吗让程序输出反码补码好像要求有点高。你根据我写的程序自己算一下反码补码并不是一件很难的事。

#include <stdioh>
#include <stdlibh>
//PRINTBIT 用于把一无符号整数翻译成二进制串
void PRINTBIT(unsigned int number)
{

unsigned int i;
unsigned int ckecker=1;//ckecker 用于指示由右至左的位数,初置设为 1

ckecker<<=8-1;//将 ckecker 中非零位移到其机器表示的最左边

//下一语句从左至右打印各位,每四位之间留一空隔
for (i=1;i<=8;i++)
{
//打印 ckecker 非零位所对应的 number 中对应位
putchar((number & ckecker)'1':'0');
if (i%4==0)//每4位用空格隔开
putchar(' ');
ckecker>>=1; //准备打印 number 中的下一位
}
putchar('\n');
}
int main(void)
{
FILE fp;
char filename = "in1dat";
char ch;

if((fp=fopen(filename,"rb"))== NULL )
{
printf("Can not open %s!\n",filename);
exit(0);
}

printf("原字符\t二进制\n");
ch=fgetc(fp);//取字符
while(!feof(fp))
{
putchar(ch);
putchar('\t');
PRINTBIT(ch);
ch=fgetc(fp);
}
fclose(fp);
return 0;
}

#include<stdioh>
void prt(char p)
{int i;
 for(i=7;i>=0;i--)
   printf("%d",(p & (1<<i))>0);
}
int main()
{ char c=122;
  int i=123,j;
  long a=124;
  long long b=125;
  float x=19375;
  double y=19375;
  char p;
  p=&c; printf("c="); prt(p); printf("\n");
  p=(char)&i; printf("i="); 
  for(j=sizeof(i)-1;j>=0;j--) prt(p+j); printf("\n");
  p=(char)&a; printf("a="); 
  for(j=sizeof(a)-1;j>=0;j--) prt(p+j); printf("\n");
  p=(char)&b; printf("b="); 
  for(j=sizeof(b)-1;j>=0;j--) prt(p+j); printf("\n");
  p=(char)&x; printf("x="); 
  for(j=sizeof(x)-1;j>=0;j--) prt(p+j); printf("\n");
  p=(char)&y; printf("y="); 
  for(j=sizeof(y)-1;j>=0;j--) prt(p+j); printf("\n");  
  return 0;
}

c语言不能直接表示二进制,没有数字前缀表示。
例子如下:
假设有一个
int
类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000
00000000
00000000
00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
扩展资料
进制是一种计数的方式,常用的有二进制、八进制、十进制、十六进制。任何数据在计算机内存中都是以二进制的形式存放的。
我对进制的个人理解,二进制数是以2为计算单元,满2进1位的数;八进制数是以8为计算单元,满8进1位的数。
对于任何一个数字,我们都可以用不同的进制来表示,比如,十进制数12,用二进制表示为1100,用八进制表示为14,用十六进制表示为0xc。

#include<stdioh>
void main()
{
int i=0,base=2,num[32];
long int n;
char c;
printf("Please input num:\n");
scanf("%d",&n);
do
{
num[i++]=n%base;
n=n/base;
}while(n!=0);
printf("转换的结果:\n");
for( n=i-1; n>=0; n-- )
{
printf("%c",c);
}
printf("\n");
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12711299.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存