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;
}
運行樣例: