c语言int二进制
Ⅰ c语言如何输入一个数值(int,float,double,char,long),以二进制的形式输出
#include<stdio.h>
voidprt(char*p)
{inti;
for(i=7;i>=0;i--)
printf("%d",(*p&(1<<i))>0);
}
intmain()
{charc=122;
inti=123,j;
longa=124;
longlongb=125;
floatx=19.375;
doubley=19.375;
char*p;
p=&c;printf("c=");prt(p);printf("
");
p=(char*)&i;printf("i=");
for(j=sizeof(i)-1;j>=0;j--)prt(p+j);printf("
");
p=(char*)&a;printf("a=");
for(j=sizeof(a)-1;j>=0;j--)prt(p+j);printf("
");
p=(char*)&b;printf("b=");
for(j=sizeof(b)-1;j>=0;j--)prt(p+j);printf("
");
p=(char*)&x;printf("x=");
for(j=sizeof(x)-1;j>=0;j--)prt(p+j);printf("
");
p=(char*)&y;printf("y=");
for(j=sizeof(y)-1;j>=0;j--)prt(p+j);printf("
");
return0;
}
Ⅱ 怎么在C语言里面输入二进制数字
c语言不能直接表示二进制,没有数字前缀表示。
例子如下:
假设有一个
int
类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000
00000000
00000000
00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
(2)c语言int二进制扩展阅读
进制是一种计数的方式,常用的有二进制、八进制、十进制、十六进制。任何数据在计算机内存中都是以二进制的形式存放的。
我对进制的个人理解,二进制数是以2为计算单元,满2进1位的数;八进制数是以8为计算单元,满8进1位的数。
对于任何一个数字,我们都可以用不同的进制来表示,比如,十进制数12,用二进制表示为1100,用八进制表示为14,用十六进制表示为0xc。
Ⅲ C语言怎么定义一个二进制数
C语言中没有 “二进制数”这种类型,所以没办法直接定义;但可以直接定义16进制数。
例:
int main(){
int a;
scanf("%p",&a);//16进制数输入%p是输入一个十六进制的数scanf("%llx",&a);也可以输入十六进制并且比较正规
printf("%d",a);//十进制输出%d是输出一个十进制的数
printf("0x%x",a);//16进制输出printf("%llX ",a);也可输出一个十六进制数如果红色部分大写X则输出十六进制为大写字母否则小写x输出为小写字母
}
(3)c语言int二进制扩展阅读
C语言中定义整型数据的十六进制数:
unsigned int hex_val = 0x123;
//定义了一个整型变量并赋以初始值为一个十六进制常量。
if (scanf("%x", &hex_val) != EOF)
{
printf("它的八、十进制分别=%o、%d ", hex_val, hex_val);
}
Ⅳ 【急求】c语言程序输入一个整数(int),要求输出其二进制形式的值。
我也发一个伏禅脊自编缺渗的,已验证通过。
#include <stdio.h>
main()
{
char binOut[17];
short int i, j; /袭祥* 16bit的整数,要用short int型 */
scanf("%d", &i);
for(j=15;j>=0;j--)
{
if(i&(1<<j))
binOut[15-j] = '1';
else
binOut[15-j] = '0';
}
binOut[16] = 0;
printf("DEC(%d)=BIN(%s)\n",i,binOut);
}
Ⅳ C语言中有符号类型的int范围应该怎么求负数用二进制怎么表示
恩!首先要指出你的一个错误!int的范围不是(-128----127)这个是char的范围,
范围的大小是由类型所占有的字节来决定的。如此所示:char是一个字节8bit,那么在二进制中,8bit最大值是弯姿255,最小值是0(在是在无符号时)如果是有符号的话.那么就还有一位是符号为,最高位是符号为。例如:1111 1111:如果是有符号的char数据那么这个数的-1;最高友弊是符号位,如果是1,就是负数,如果是0是正数。
0111 1111 就是+127;
那么1111 1111 怎么理解是-1嗯埋告绝!在数电中提到,对于一个负数要用它的反码来表示。
如:1111 1111 的反码是1000 0001.怎么的来呢!?
首先,我们要得到-1的值,那么第一步是的好1000 0001,最高位1是符号位,最后一个1是数值位。但是在机器中我们要用反码来表示此值。那么就要求他的反码。反码的求法是符号位不变。数值位取反加一。
取反后是结果是:1111 1110
再加一的结果是:1111 1111
如果是1,那么1 的8位表示是0000 0001
解释的很少!你可以自己看看,如果不懂可以在聊!
Ⅵ c语言中比如int等等这一类,变为2进制有几位
和是否变为二进制无关。
所谓二进制 十备袜进制 8进制 16进制
都只是仿洞激给人看的。
在计算机,或者编译器中,都只有二进制。
各种类型 在不同位的系统上 有不同表现
比如int 在16位机上为16位, 其它为32位
char 不管哪里都是8位
long 在64位上为64位,其它为32位。颤桥
float都是32位。
这个没什么好方法,只有记住。
Ⅶ C语言int范围内 最小值的二进制表示
1后面加31个零 ,int的取值范围是 负的2的32次方到正的2的32次方减一
Ⅷ C语言中怎么输出数据的二进制
二进制数不能像十进制那样%d直接输出。
如果想输出一个数的二进制可以通过函数把其转成2进制字符串再将其输出。
itoa函数
原型:char*itoa(intvalue,char*string,intradix);
参数:int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等
功能:将任意类型的数字转换为字符串。在<stdlib.h>中与之有相反功能的函数是atoi。
参考代码:
1、
#include<stdlib.h>
#include<stdio.h>
intmain(void)
{
intnumber=10;
charstring[25];
itoa(number,string,2);
printf("十进制数:%d,二进制数:%s ",number,string);
return0;
}
/*
十进制数:10,二进制数:1010
*/
2、
voidprint_bin(intn)
{
intl=sizeof(n)*8;//总位数。
inti;
if(i==0)
{
printf("0");
return;
}
for(i=l-1;i>=0;i--)//略去高位0.
{
if(n&(1<<i))break;
}
for(;i>=0;i--)
printf("%d",(n&(1<<i))!=0);
}
Ⅸ C语言中有直接把一个int类型的整数化成二进制数的办法吗 必须要自己写代码来转换吗
因为C没有提供二进制输入、输出的功能,所以也会有这种数字转换的现碧和察成办法,都悔茄得自己写。但写起来可以用一些库函数来完成——
#include棚模"stdio.h"
#include<stdlib.h>
intmain(intargv,char*argc[]){
intx=123456789;
charb[33];
itoa(x,b,2);//调用itoa把x转换成二进制字符串
printf("%d(10)=%s(2) ",x,b);
return0;
}
运行样例: