當前位置:首頁 » 服務存儲 » 二進制存儲條件
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

二進制存儲條件

發布時間: 2023-03-22 07:58:37

『壹』 c/c++中如何採用二進制文件存儲數據

應該這樣保存:
int main()
{
string str1;
string str2;
cin >> str1;
cin >> str2;
ofstream outfile("temp.dat",ios::binary);
if(! outfile)
{
cerr << "Error ! " <<endl;
return 0;
}
outfile.write(str1.c_str(),str1.size()+1);
/*你原來寫成(char * )&str1,這樣往文件里寫入的東西其實是str1這個類的數據(包括了指向實際字元串的指針),而不是字元串。因為string類的字元串是用new在堆上分配的,string類本身只包含尺殲局字元串的指針,用c_str()這個成員函數可以獲得這個指針,你可以看一下string類的源碼。
改成這樣改敗以後,寫入文件里的就是實際的字元串了。
寫入的長度應該是字元串的長度(包括結束符'\0')*/
outfile.write(str2.c_str(),str2.size()+1);
outfile.close();
return 1;
}
讀取的時候這樣讀取:
int main()
{
string str1;
str1.reserve(100);/*為str1申請100個字元的空間,如果不申請的話c_str()返回的是空指針,也就是沒有空間。假設你上次存的兩個字元串長度不超過100。*/
ifstream infile("temp.dat",ios::binary);
if (! infile)
{
cerr << "Error ! " <<endl;
return 0;
}
infile.read((char * )str1.c_str(),100);/*這兒由於不知道你上次寫入文件的兩個字元串的長度,只能把文件里的內容都讀出來再根據'\0'來分析出兩個字元串。*/
cout <<str1 <<endl; //輸出第一個字元串
cout << (char*)(str1.c_str() + strlen(str1.c_str())+1) << endl;//輸出第二個字元串陵讓
return 1;
}

『貳』 以二進制形式存儲在文件中.應該怎麼實現

文件有兩種存放方式:文本方式,二進制方式. FILE *fp=fopen("1.txt","w")這是以文本方式寫文件. FILE *fp=fopen("1.txt","r")這是以文本方式讀文件. FILE *fp=fopen("1.dat","wb")這是以二進制方式寫文件. FILE *fp=fopen("1.dat","rb")這是以二進制方式讀文件.

『叄』 二進制在計算機中如何儲存

1個位元組只能表示256個數,由於有符號所以就把它表示成范圍:-128-127。二進制在計算機中儲存方法:用最高位表示符號位,如果是0表示正數,如果是1表示負數,剩下的7位用來儲存數的絕對值的話,能表示27個數的絕對值,再考慮正負兩種情況,27*2還是256個數。首先定義0在計算機中儲存為00000000,對於正數我們依然可以像無符號數那樣換算,從00000001到01111111依次表示1到127。那麼這些數對應的二進制碼就是這些數的原碼。到這里很多人就會想,那負數是不是從10000001到11111111依次表示-1到-127,可以沒有,如果這樣的話那麼一共就只有255個數,因為10000000的情況沒有考慮在內。實際上,10000000在計算機中表示最小的負整數,就是這里的-128,而且實際上並不是從10000001到11111111依次表示-1到-127,而是剛好相反的,從10000001到11111111依次表示-127到-1。負整數在計算機中是以補碼形式儲存的,補碼是怎麼樣表示的呢,這里還要引入反碼概念,反碼就是把負數的原碼(負數的原碼和和它的絕對值所對應的原碼相同,簡單的說就是絕對值相同的數原碼相同)各個位按位取反,是1就換成0,是0就換成1,如-1的原碼是00000001,和1的原碼相同,那麼-1的反碼就是11111110,而補碼就是在反碼的基礎上加1,即-1的補碼是11111110+1=11111111,因此可以算出-1在計算機中是按11111111儲存的。
總之,計算機儲存有符號的整數時,是用該整數的補碼進行儲存的,0的原碼、補碼都是0,正數的原碼、補碼可以特殊理解為相同,負數的補碼是它的反碼加1。

『肆』 作為一個存儲元必須滿足哪些條件

存儲單元:多個存儲元的集合

一般應具有存儲數據和讀寫數據的功能,以8位二進製作為一個存儲單元,也就是一個位元組。每個單元有一個地址,是一個整數編碼,可以表示為二進制整數。程序中的變數和主存儲器的存儲單元相對應。變數的名字對應著存儲單元的地址,變數內容對應著單元所存儲的數據。存儲地址一般用十六進制數表示,而每一個存儲器地址中又存放著一組二進制(或十六進制)表示的數,通常稱為該地址的內容。

存儲單位:在存儲器中有大量的存儲元,把它們按相同的位劃分為組,組內所有的存儲元同時進行讀出或寫入操作,這樣的一組存儲元稱為一個存儲單元。一個存儲單元通常可以存放一個位元組;存儲單元是CPU訪問存儲器的基本單位。

存儲單元
在計算機中最小的信息單位是bit,也就是一個二進制位,8個bit組成一個Byte,也就是位元組。一個存儲單元可以存儲一個位元組,也就是8個二進制位。計算機的存儲器容量是以位元組為最小單位來計算的,對於一個有128個存儲單元的存儲器,可以說它的容量為128位元組。如果有一個1KB的存儲器則它有1024個存儲單元,它的編號為從0-1023。存儲器被劃分成了若干個存儲單元,每個存儲單元都是從0開始順序編號,如一個存儲器有128個存儲單元,則它的編號就是從0-127。

存儲地址一般用十六進制數表示,而每一個存儲器地址中又存放著一組二進制(或十六進制)表示的數,通常稱為該地址的內容。值得注意的是,存儲單元的地址和地址中的內容兩者是不一樣的。前者是存儲單元的編號,表示存儲器中的一個位置,而後者表示這個位置里存放的數據。正如一個是房間號碼,一個是房間里住的人一樣。
存放一個機器字的存儲單元,通常稱為字存儲單元,相應的單元地址叫字地址。而存放一個位元組的單元,稱為位元組存儲單元,相應的地址稱為位元組地址。如果計算機中可以編址的最小單元是字存儲單元,則該計算機稱為按字定址的計算機。如果計算機中可編址的最小單位是位元組,則該計算機稱為按位元組定址的計算機。如果機器字長等於存儲器單元的位數,一個機器字可以包含數個位元組,所以一個存儲單元也可以包含數個能夠單獨編址的位元組地址。例如一個16位二進制的字存儲單元可存放兩個位元組,可以按字地址定址,也可以按位元組地址定址。當用位元組地址定址時,16位的存儲單元占兩個位元組地址

『伍』 計算機內部信息的表示及存儲採用二進制形式最主要的原因是什麼

這個問題分二個方面回答:
第一,計算機採用二進制的原因:
(1)二進制數在物理上最容易實現。例如,可以只用高、低兩個電平表示"1"和"0",也可以用脈沖的有無或者脈沖的正負極性表示它們。
(2)二進制數用來表示的二進制數的編碼、計數、加減運算規則簡單。
(3)二進制數的兩個符號"1"和"0"正好與邏輯命題的兩個值"是"和"否"或稱"真"和"假"相對應,為計算機實現邏輯運算和程序中的邏輯判斷提供了便利的條件。
第二,
計算機採用二進製表示有以下優勢:
(1)、易於物理實現
(2)、運算簡單
(3)、機器可靠性高
(4)、通用性強四個特點。

『陸』 作為一個存儲元必須滿足哪些條件

1,動態性
當數據對象從資料庫中以任何給定順序的命令,如插入或刪除時,存取方法應該可以持續地保持其變遷軌跡。
2.第二/第三級的存儲管理
盡管主存在不斷增長,但在主存中不可能存放整個資料庫。因此,存取方法需具備自動訪問第二/三級存儲設備的能力。
3。支持多種運算
存取方法應不支持有損其他運算(如刪除)的運算(如查詢)。
4.輸入數據的獨立性
當輸入數據有偏差時,存取方法應保持它們的效率。這一點對在不同維上分布不同的數據是非常重要的。
5簡單性
在特殊情況下,錯綜復雜的訪問方法經常會出錯,因此在大規模的應用中不要求有足夠的魯棒性。
6.擴展性
存取方法應適應未來資料庫的增長。
7.時間效率
空間查找應當是快速的。一個主要的設計目標是需要滿足一維B一樹的性能特徵:首先,忽略數據的插入順序,對於所有可能的輸入數據的分布,存取方法應當在最壞情況下的查找性能保證是對數級的。其次,最壞條件的性能應當對所有d維屬性的任意組合都能保持一致。
8空間效率
一個索引佔用的空間應比索引指向的存儲數據所佔用的空間要小,因此可保證存儲數據的有效應用。
9.同步性和恢復性
在現代資料庫中,多個用戶同時在對資料庫更新、恢復及插入數據,存取方法應提供魯棒性的技術對這些處理予以支持,這時高效率就處於次要地位。
10 最小的影響
將訪問方法集成到一個資料庫系統中,對系統中的現有功能影響最小。

『柒』 二進制的規則是什麼

比如23這個數慧汪陸字 ,我們就讓它除以2得11餘1 ,然後11再除以2得5餘1 ,然後5再除以2得2餘1 ,
2再除以2得1餘0 ,所以23化成2進制就是10111 ,就是把余數從下往上寫下來,第一位是1 。

拓展資料

二進制是計算技術中廣泛採用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統。

數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0。

20世紀被稱作第三次科技革命的重要標志之一的計算機的發明與應用,因為數字計算機只能識別和處理由『前頃0』.『1』符號串組成的代碼。其運算模式正是二進制。19世紀愛爾蘭邏輯學家喬治布爾對邏輯命題的思考過程轉化為對符號"0''.''1''的某種代數演算,二進制是逢2進位的進位制。0、1是基本算符。因為它只使用0、1兩個數字元號,陵臘非常簡單方便,易於用電子方式實現。

『捌』 二進制文件的二進制文件的儲存方式

列舉一個二進制文件如下:
00000000h:0F 01 00 00 0F 03 00 00 12 53 21 45 58 62 35 34; .........S!EXb54
00000010h:41 42 43 44 45 46 47 48 49 47 4B 4C 4D 4E 4F 50; ABCDEFGHIGKLMNOP
這里列出的是在 UltraEdit(UE) 里看到的東西。其實只有紅色部分是文件內容。前面的是 UE 加入的行號。後面的是 UE 嘗試解釋為字元型的參考。這個文件一共有 32 位元組長。顯示為兩列,每列 16 個位元組。實際上,這僅僅是 UE 的顯示而已。真實的文件並不分行。僅僅知道這個文件的內容,如果我們沒有任何說明的話,是不能看出任何有用信息的。下面我規定一下說明:我們認為,前 4 個位元組是一個 4 位元組的整型數據(0F 01 00 00 十六進制:10Fh 十進制:271)。這 4 個位元組之後的 4 個位元組是另一個 4 位元組的整型數據(0F 03 00 00 十六進制:30Fh 十進制:783)。其後的 4 個位元組(12 53 21 45 )表示一個 4 位元組的實型數據:2.5811919E+3。再其後的 4 個位元組(58 62 35 34)表示另一個 4 位元組的實行數據:1.6892716E-7。而只後的 16 個位元組(41 42 43 44 45 46 47 48 49 47 4B 4C 4D 4E 4F 50)我們認為是 16 個位元組的字元串(ABCDEFGHIGKLMNOP)實際上,二進制文件只是儲存數據,並不寫明數據類型,比如上面的第 9 位元組到第 16 位元組(12 53 21 45 58 62 35 34),我們剛才認為是 2 個 4 位元組的實型,其實也可以認為是 8 個位元組的字元型( S!EXb54)。而後面的 16 個位元組的字元串(ABCDEFGHIGKLMNOP),我們也可以認為是 2 個 8 位元組的整型,或者 4 個 4 位元組的整型,甚至 2 個 8 位元組的實型,4 個 4 位元組的實型,等等等等。因此,面對一個二進制文件,我們不能准確地知道它的含義,我們需要他的數據儲存方式的說明。這個說明告訴我們第幾個位元組到第幾個位元組是什麼類型的數據,儲存的數據是什麼含義。否則的話,我們只能猜測,或者無能為力。

『玖』 二進制有什麼規則

1、二進制的運算規則:

二進制的加法規則:0+0=0,0+1=1 ,1+0=1, 1+1=10(向高位進位);二進制的減法規則:0-0=0,10-1=1(向高位借位),1-0=1,1-1=0 (模二加運算或異或運算) ;

二進制的乘櫻畝法規則:碼野0 * 0 = 00 * 1 = 0,1 * 0 = 0,1 * 1 = 1;二進制的除法規則:0÷0 = 0,0÷1 = 0,1÷0 = 0 (無意義),1÷1 = 1 。

2、二進制的轉換規則:

二進制轉換成十進制:基數乘以權,然後相加,簡化運算時可以把數位數是0的項不寫出來。小數部分也一樣,但精確度較少。

二進制轉換為八進制:採用「三位一並法」(是以小數點為中心向左右兩邊以每三位分組,不足的補上0)進行轉換。例:將二進制數(11100101.11101011)2轉換成八進制數。(11100101.11101011)2=(345.353)8

二進制轉換為十六進制:採用的是「四位一並法」,整數部分從低位開始,每四位二進制數為一組,最後不足四位的,則在高位加0補足四位為止,也可以不補0;小數部分從高位開始,每四位二進制數為一組,最後不足四位的,必須在低位加0補足四位,然後用對應的十六進制數來代替。

(9)二進制存儲條件擴展閱讀:

計算機採用二進制原因

1、首先,二進位計數制僅用兩個數碼。0和1,所以,任何具有二個不同穩定狀態的元件都可用來表示數的某一位。更重要的是兩種截然不同的狀態不單有量上的差別,而且是有質上的不同。這樣就能大大提高機器的抗干擾能力,提高可靠性。

2、其次,二進位計數制的四則運算規則十分簡單。而且四則運算最後都可歸結為加法運算和移位,這樣,電子計遲頌喊算機中的運算器線路也變得十分簡單。不僅如此,線路簡化,速度也就可以提高。

3、在電子計算機中採用二進製表示數可以節省設備。從理論上證明,用三進位制最省設備,其次就是二進位制。但由於二進位制有包括三進位制在內的其他進位制所沒有的優點,所以大多數電子計算機還是採用二進制。

『拾』 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;
}