From fb8d1d9575ac85df62a27ccc1e0bcd8d6c4656bd Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 30 Oct 2026 20:18:07 +0800 Subject: [PATCH] =?UTF-8?q?Update=2065.=20=E4=B8=8D=E7=94=A8=E5=8A=A0?= =?UTF-8?q?=E5=87=8F=E4=B9=98=E9=99=A4=E5=81=9A=E5=8A=A0=E6=B3=95.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充负数补码适用的说明,并补充具体二进制运算示例。 --- notes/65. 不用加减乘除做加法.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/notes/65. 不用加减乘除做加法.md b/notes/65. 不用加减乘除做加法.md index 61f9f88c..f6be7803 100644 --- a/notes/65. 不用加减乘除做加法.md +++ b/notes/65. 不用加减乘除做加法.md @@ -12,7 +12,9 @@ a ^ b 表示没有考虑进位的情况下两数的和,(a & b) \<\< 1 就是进位。 -递归会终止的原因是 (a & b) \<\< 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。 +递归会终止的原因是 (a & b) \<\< 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。负数用补码表示,同样适用,进位最多左移 32 次。 + +例如 5 + 3,即 101 + 011:无进位和为 110,进位为 010;110 + 010 的无进位和为 100,进位为 100;100 + 100 的无进位和为 000,进位为 1000;最后进位为 0,结果为 1000,即 8。 ```java public int encryptionCalculate(int dataA, int dataB) {