Новак съм в програмирането, каква е разликата между 32-битова и 64-битова система, какво трябва да знам, когато пиша C ++ програма?


Отговор 1:

Какво точно представлява N-битова система, не винаги е договорено. Лично аз го смятам за компютърна система, чиито процесори регистри с общо предназначение са N бита.

Например, вторият ми компютър имаше процесор Motorola 68008: Той имаше 32-битови регистри, но вътрешно работеше само на 16 бита (половин регистър) наведнъж и външно общуваше с паметта само 8 бита наведнъж. Така че, въпреки че беше част от 32-битово процесорно семейство, понякога се наричаше 8/16/32-битов процесор. С моята дефиниция, това е 32-битов процесор.

По подобен начин Intel i486 има 32-битови регистри с общо предназначение, но също така има 80-битови регистри с плаваща запетая: Никой обаче не го счита за 80-битов компютър.

Когато пишете C ++, обикновено сте защитени от всички тези броя на битовете, но те се отразяват в размера, подравняването и обхвата на някои от основните типове. Например, обикновено int ще бъде 32-битов целочислен тип, а long long е почти винаги 64-битов цяло число. Въпреки това, дълго може да бъде или един, в зависимост от платформата. Също така обикновено указателите ще бъдат дълги 4 байта на 32-битови платформи и 8 байта на 64-битови платформи (и това често е основното предимство на 64-битовите системи пред 32-битовите системи: те могат да адресират повече памет поради по-широки указатели).