一、Win10 32位和64位的區別
Win10的32位和64位,都可以在同一套硬件上運行。二者的差異在于可尋址的內存空間不同,32位操作系統的最大可尋址內存為4GB,而64位的操作系統則達到了2^64=16EB。
換言之,雖然現在的主流CPU支持多線程,卻沒有多達數百上千個線程同時運行的環境,因而相對于可尋址內存空間增長的速度,程序的運行效率并沒有取得飛躍式的提高。
同時,64位的操作系統在處理浮點數時會更加準確,在計算機繪圖、信號處理、科學計算、人工智能等領域都有更強的處理能力。而32位的操作系統在處理較小的應用程序時,相對于64位操作系統有更快的速度和更好的兼容性。
二、MD516位和32位的區別
MD516位和32位的區別在于可尋址的內存空間不同。MD516位的程序最多只能尋址2^16個內存單元,也即64K,而32位的程序可以尋址2^32個內存單元,大概在4GB左右。
這帶來的直接結果是在MD5上,我們并不能使用較大的內存空間來存儲更大規模的數據,而32位可以通過操作系統調用的方式來分配更大的內存空間從而提高程序的性能。不過相對于MD516位,MD532位的程序占用的空間也更大,需要更高的運算速度和內存空間。
三、MD516位與32位實現MD5算法的代碼示例
MD516位實現示例代碼:
#include
#include
#define md5_size 16
typedef uint8_t byte;
typedef uint32_t word;
word X[] =
{
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
};
word A = 0x67452301;
word B = 0xefcdab89;
word C = 0x98badcfe;
word D = 0x10325476;
void md5(byte *data, size_t len, byte *result)
{
word X[16];
memcpy(X, data, len);
X[len/4] |= 0x80;
X[(len+8)/4] = len*8;
len += 8;
for(int i=0; i> (32 - j % 32)));
}
A += AA;
B += BB;
C += CC;
D += DD;
}
memcpy(result, &A, 4);
memcpy(result+4, &B, 4);
memcpy(result+8, &C, 4);
memcpy(result+12, &D, 4);
}
MD532位實現示例代碼:
#include
#include
#define md5_size 16
typedef uint8_t byte;
typedef uint32_t word;
word X[] =
{
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
};
word A = 0x67452301;
word B = 0xefcdab89;
word C = 0x98badcfe;
word D = 0x10325476;
void md5(byte *data, size_t len, byte *result)
{
word X[16];
memcpy(X, data, len);
X[len/4] |= 0x80;
X[(len+8)/4] = len*8;
len += 8;
for(int i=0; i> (32 - j % 32)));
}
A += AA;
B += BB;
C += CC;
D += DD;
}
memcpy(result, &A, 4);
memcpy(result+4, &B, 4);
memcpy(result+8, &C, 4);
memcpy(result+12, &D, 4);
}
四、結語
總的來說,MD516位與32位的區別在于可尋址內存空間不同。相比于MD516位,MD532位可以處理更大規模的數據,但也需要更高的運算速度和內存空間。不同的應用場景需要不同的算法和優化方式。我們需要根據實際情況選擇合適的方案,才能使程序達到最佳的性能。