Python -> kết quả 48:
print 64 - ((8 - 56) % 64)
C++, Java -> kết quả 112:
cout << 64 - ((8 - 56) % 64);
Theo m hiểu theo toán thì thằng c++ đúng? Ko biết ông python tính kiểu gì ra 48.
Python -> kết quả 48:
print 64 - ((8 - 56) % 64)
C++, Java -> kết quả 112:
cout << 64 - ((8 - 56) % 64);
Theo m hiểu theo toán thì thằng c++ đúng? Ko biết ông python tính kiểu gì ra 48.
Giả sử:
Sau khi loại bớt đi những thứ rườm rà, thì xem xét biểu thức sau: r = -48 % 64, trong đó:
Công thức tính a % n đối với Java:
trunc() lấy phần nguyên của số và giữ dấu của số:
Khi đó
Công thức tính a % n đối với Python:
⎣x⎦ là hàm số R -> N, là số nguyên lớn nhất nhỏ hơn x
|x| là giá trị tuyệt đối của x.
Khi đó:
Tham khảo: Modulo Operation
Nó tựa tựa kiểu lấy căn bậc hai ấy có hai nghiệm :< gọi là principal branch.
Ta có thể lấy modulo là âm hay dương đều được, miễn là trị tuyệt đối nhỏ hơn số chia. Lấy số âm có khi dễ tính tay hơn.
-48 = 64*(-1) + 16
vậy nên -48%64 = 16 => kết quả cuối cùng phải là 48
mà thật ra là cùng 1 ngôn ngữ có khi còn ra kết quả khác nữa chứ huống chi là khác ngôn ngữ :))