1. 程式人生 > >你真的瞭解計算機除法嗎

你真的瞭解計算機除法嗎

前不久看了《C++反彙編與逆向分析技術揭祕》看到除法的介紹部分,裡面有1道題,8 % -3 = ?;-8 % -3 = ?;-8 % 3 = ?;大家能答的上來嗎?反正我當時是沒答上來,我想肯定很多人也一時答不上來,下面是上題的答案:

              8 % -3 = 2

             -8 % -3 = -2

             -8 % 3 = -2

大家知道為什麼嗎?如果不知道的話,跟著我一起去弄明白吧!我們知道a = q * b + r,其中a是被除數,b是除數,q是商,r是餘數,並且a、b、q、r都屬於整數,將上式轉換一下,(a - r) / b = q,根據計算機除法是向0取整,則有

             (8 - r) / - 3 = -2       =》 r = 2

             (-8 - r) / -3 = 2        =》 r = -2

             (-8 - r) /  3 = -2       =》 r = -2