㈠ c語言中一般整型化為二進制,長度怎麼規定的比如int x=5;5化為二進制一般情況下是8位00000101,16位
整型是16位的,最大的整型數可用二進製表示為0111 1111 1111 1111。
而實際寫的時候不一定要寫十六位,比如說12轉為二進制可寫為0000 0000 0000 1100,也可以寫成1100,左側的0可以省略,這和十進制有點像:012和12是一樣的,左側的0不影響大小,寫不寫沒關系。
int x=5;5轉二進制可寫為0000 0101,也可寫為0000 0000 0000 0101,也可只寫0101;都一樣的。一般寫的時候按方便簡單的來。
㈡ int 最大值
int最大值是int的最大值是2147483647。
1、16位編譯器說明:
int佔16位。內存2位元組。最大值:32767
2、32位和64位編譯器:
int佔32位。內存4位元組。最大值:21474836473。
在32/64位系統中都是32位,范圍為-2147483648~+2147483647。
決定int最大值的主要原因,根據編譯器類型不同而變化。所以某些編寫的程序,不能成功的在電腦中運行,多半與編譯器有關系,可能並不是程序的原因。
一般程序的表達方式,最高位為符號位,位數為n位時,則最大值為2^(n-1)即2的n-1次冪。關於演算法的問題,自然也要使用我們所學習的數學知識。
C/C++編程語言中,int表示整型變數,是一種數據類型,用於定義一個整型變數,在不同編譯環境有不同的大小,不同編譯運行環境大小不同。
在計算機里,對數字編碼有3種方式:原碼、補碼、反碼。原碼其實就是10進制數直接轉2進制數的結果。比如:十進制的18,在二進制里是10010。
那這里的10010就是原碼。我們可以sizeof一下我們自己的電腦上int型占幾個位元組。我的是4個位元組,也就是說只有32個位。如果一個十進制數轉位二進制數位數大於32,就溢出,其實也就是存不下了。
存數不僅僅有正數還有負數,在計算機里如何區分正數負數?我們規定最高位是符號位。為0是正,為1負。所以最高位是不可以參加計算的。
比如二進制數1000最高位是符號位的話,轉十進制不是8,而是-0,對就是負0(正0的二進制形式是0000)。如果給一個十進制形式的負數,如何計算它的補碼?
1、計算這個數絕對值的二進製表示。
2、把2^n寫成二進制形式減去這個數,得到的就是補碼。
比如:-5,
1、5的二進制形式是:0101.最高位是符合位,為0是正。
2、1111-101,二進制的減法,補碼就是1010.最高位是符合位,為1是負。
所以,int佔32位的時候,最大可以賦值為:2147483647。也就是0x7fffffff。注意:7的二進制形式最高位為0,如果你對2147483647+1.輸出的就是-2147483648。
這個數是負數中最大的數,也就是int型可以表示的最小的負數。它的十六進製表示為:0x8fffffff,8的二進制形式最高位是符號位,是1,為負。
㈢ c語言中採用二進制文件存儲數據的問題
1、二進制文本使用fopen函數的二進制模式「rb」就可以打開。對於程序來說,不管後綴名如何,文件分為兩種類型:文本文件和二進制文件。 C語言里有一系列文件操作函數。區分文本和二進制文件,需要在打開文件時設置不同的控制符mode的變數即可。
2、fopen的函數原型:FILE * fopen(const char * path,const char * mode);
fopen函數的第一個參數是文件路徑,第二個參數是打開方式,有以下幾種方式:
r 以只讀方式打開文件,該文件必須存在。
r+ 以可讀寫方式打開文件,該文件必須存在。
rb+ 讀寫打開一個二進制文件,允許讀數據。
rw+ 讀寫打開一個文本文件,允許讀和寫。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)
wb 只寫打開或新建一個二進制文件;只允許寫數據。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
at+ 讀寫打開一個文本文件,允許讀或在文本末追加數據。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。
上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。
3、常式:
#include <stdlib.h>
#include<stdio.h>
intmain()
{
FILE*fpPhoto,*fpText,*fpTarget;
intiRead;
charszBuf[100];
printf("請輸入第一個文件名(jpg): ");
gets(szBuf);
fpPhoto=fopen(szBuf,"rb");
printf("請輸入第二個文件名(txt): ");
gets(szBuf);
fpText=fopen(szBuf,"rb");
printf("請輸入目的文件名(jpg): ");
gets(szBuf);
fpTarget=fopen(szBuf,"wb");
if(!fpPhoto||!fpText||!fpTarget)
{
printf("打開文件失敗! ");
system("pause");
return-1;
}
while((iRead=fread(szBuf,1,sizeof(szBuf),fpPhoto))>0)
fwrite(szBuf,1,iRead,fpTarget);
while((iRead=fread(szBuf,1,sizeof(szBuf),fpText))>0)
fwrite(szBuf,1,iRead,fpTarget);
fclose(fpPhoto);
fclose(fpText);
fclose(fpTarget);
return0;
}