栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java为什么认为从10到99的所有数字的乘积为0?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 =0vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv          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 * 11110     1101110110        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    51338280961 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  00  0vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv          0 * 98  00  0
  1. 正确的 结果
  2. 是结果的内部表示形式(用于说明的是64位)
  3. 是由低32位的二进制补码表示的结果

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

  • 向左移动位,向右添加零位
  • 结果为偶数

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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469624.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号