計算機底層是如何判斷兩個數是否相等的?

時間 2021-07-10 08:38:29

1樓:「已登出」

char a = -1;

00E8293E mov byte ptr [a],0FFh

unsigned char b = UCHAR_MAX;

00E82942 mov byte ptr [b],0FFh

a == b;

00E82946 movsx eax,byte ptr [a]

00E8294A movzx ecx,byte ptr [b]

00E8294E cmp eax,ecx

因為cmp需要兩個dword運算元

movsx eax,byte ptr [a] eax = 0xFFFFFFFFh

movzx ecx,byte ptr [b] ecx = 0x000000FFh

所以相當於a b都提公升為了int

所以不同

int a = -1;

0118293E mov dword ptr [a],0FFFFFFFFh

unsigned int b = UINT_MAX;

01182945 mov dword ptr [b],0FFFFFFFFh

a == b;

0118294C mov eax,dword ptr [a]

0118294F cmp eax,dword ptr [b]

當然這是從編譯結果來看

從c語言規範來說

對所有"小於"int的基礎資料型別採用任何運算子都至少要先提公升到int

女,計算機專業,備考兩個月,突然不想再考計算機研究生了,想跨專業,但不知道跨哪個專業?

羅家睿 女生,我建議你可以考慮一下未來的職業規劃,以職業為著眼點去考慮考什麼專業。我是武漢某211計算機本碩,考研的時候稀里糊塗做了炮灰,調劑回本校,讀研快一學年了,現在又想著考公,找乙個穩定體面的工作,想遠離996,做乙個站著掙錢的人。我個人建議女生可以考慮公務員這條路,我本科專業的女同學大部分不...

計算機是如何實現「隨機生成乙個數字」這種功能的?

Belleve 偽隨機數 就是那種從種子挨個生成的隨機數,一般是用線性同餘 如 GCC 裡,A 1103515245,B 12345 比較高階的是 MT19937,可以產生質量更好的隨機數。真隨機數 用於密碼的真隨機數一般是靠收集硬體資訊,可以利用硬體的雜訊來生成,當前時間也有用處。不過我也見過喪心...

計算機是如何聊天的?

車小胖 那是因為TCP程序 核心程序 需要等待伺服器程序 使用者程序 完全生成網頁才能發出,這個等待過程有點耗時,而客戶端有可能超時重傳,為了避免這種情況的發生,需要TCP程序立馬確認客戶端,而不能等網頁返回 伺服器生成好 再確認。之所以說以上是乙個理想模型,是因為我們忽略了丟包 超時重傳,還忽略了...