10/01/31 19:53:14
>>497
丸め方向は0側、+側、-側があって、intの割り算は絶対値で見て端数切捨てだから、単純な掛け算では0方向への丸めが必要になる。
この計算方法の場合、edxを見に行った時点で2の補数形式で端数を切り捨てているわけだが、+の値の場合は0/-方向へ-の値の場合は-方向、つまり-方向へ丸める計算になっている。
-方向へ丸まった値を0方向へ丸める場合、どう丸めなおすべきかは符号で決まるから0x1f=31ビットシフトで最上位ビット=符号ビットを引っ張ってきてる。
割り切れる値がどう丸まっててどう補正されるのかはしらん。…取り敢えず実際に計算してみればいいかと思う。
数値の丸めについては書籍が出るような話だから厳密に知りたいならその手の書籍をどうぞ。