java用递求1到10的积_Java为什么认为从10到99的所有数字的乘积为0?

小编典典

程序在每个步骤执行的操作如下:

1 * 10 = 10

10 * 11 = 110

110 * 12 = 1320

1320 * 13 = 17160

17160 * 14 = 240240

240240 * 15 = 3603600

3603600 * 16 = 57657600

57657600 * 17 = 980179200

980179200 * 18 = 463356416

463356416 * 19 = 213837312

213837312 * 20 = -18221056

-18221056 * 21 = -382642176

-382642176 * 22 = 171806720

171806720 * 23 = -343412736

-343412736 * 24 = 348028928

348028928 * 25 = 110788608

110788608 * 26 = -1414463488

-1414463488 * 27 = 464191488

464191488 * 28 = 112459776

112459776 * 29 = -1033633792

-1033633792 * 30 = -944242688

-944242688 * 31 = 793247744

793247744 * 32 = -385875968

-385875968 * 33 = 150994944

150994944 * 34 = 838860800

838860800 * 35 = -704643072

-704643072 * 36 = 402653184

402653184 * 37 = 2013265920

2013265920 * 38 = -805306368

-805306368 * 39 = -1342177280

-1342177280 * 40 = -2147483648

-2147483648 * 41 = -2147483648

-2147483648 * 42 = 0

0 * 43 = 0

0 * 44 = 0

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

0 * 97 = 0

0 * 98 = 0

请注意,在某些步骤上,相乘会导致较小的数字(980179200 * 18 = 463356416)或错误的符号(213837312 * 20 =

-18221056),表明存在整数溢出。但是零从何而来呢?继续阅读。

牢记int数据类型是签署了32位,补整,这里是每一个步骤的说明:

Operation Result(1) Binary Representation(2) Result(3)

---------------- ------------ ----------------------------------------------------------------- ------------

1 * 10 10 1010 10

10 * 11 110 1101110 110

110 * 12 1320 10100101000 1320

1320 * 13 17160 100001100001000 17160

17160 * 14 240240 111010101001110000 240240

240240 * 15 3603600 1101101111110010010000 3603600

3603600 * 16 57657600 11011011111100100100000000 57657600

57657600 * 17 980179200 111010011011000101100100000000 980179200

980179200 * 18 17643225600 100 00011011100111100100001000000000 463356416

463356416 * 19 8803771904 10 00001100101111101110011000000000 213837312

213837312 * 20 4276746240 11111110111010011111100000000000 -18221056

-18221056 * 21 -382642176 11111111111111111111111111111111 11101001001100010101100000000000 -382642176

-382642176 * 22 -8418127872 11111111111111111111111111111110 00001010001111011001000000000000 171806720

171806720 * 23 3951554560 11101011100001111111000000000000 -343412736

-343412736 * 24 -8241905664 11111111111111111111111111111110 00010100101111101000000000000000 348028928

348028928 * 25 8700723200 10 00000110100110101000000000000000 110788608

110788608 * 26 2880503808 10101011101100010000000000000000 -1414463488

-1414463488 * 27 -38190514176 11111111111111111111111111110111 00011011101010110000000000000000 464191488

464191488 * 28 12997361664 11 00000110101101000000000000000000 112459776

112459776 * 29 3261333504 11000010011001000000000000000000 -1033633792

-1033633792 * 30 -31009013760 11111111111111111111111111111000 11000111101110000000000000000000 -944242688

-944242688 * 31 -29271523328 11111111111111111111111111111001 00101111010010000000000000000000 793247744

793247744 * 32 25383927808 101 11101001000000000000000000000000 -385875968

-385875968 * 33 -12733906944 11111111111111111111111111111101 00001001000000000000000000000000 150994944

150994944 * 34 5133828096 1 00110010000000000000000000000000 838860800

838860800 * 35 29360128000 110 11010110000000000000000000000000 -704643072

-704643072 * 36 -25367150592 11111111111111111111111111111010 00011000000000000000000000000000 402653184

402653184 * 37 14898167808 11 01111000000000000000000000000000 2013265920

2013265920 * 38 76504104960 10001 11010000000000000000000000000000 -805306368

-805306368 * 39 -31406948352 11111111111111111111111111111000 10110000000000000000000000000000 -1342177280

-1342177280 * 40 -53687091200 11111111111111111111111111110011 10000000000000000000000000000000 -2147483648

-2147483648 * 41 -88046829568 11111111111111111111111111101011 10000000000000000000000000000000 -2147483648

-2147483648 * 42 -90194313216 11111111111111111111111111101011 00000000000000000000000000000000 0

0 * 43 0 0 0

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

0 * 98 0 0 0

是 正确的 结果

是结果的内部表示形式(用于说明的是64位)

是由低32位的二进制补码表示的结果

我们知道,将数字乘以偶数:

向左移动位,向右添加零位

结果为偶数

因此,基本上,您的程序会反复将偶数与另一个数相乘,从而从右开始将结果位清零。

PS:如果乘法仅涉及奇数,则结果将不会为零。

2020-09-18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值