首页 热点资讯 义务教育 高等教育 出国留学 考研考公

双字节无符号乘法程序的学习难点是什么?

发布网友 发布时间:2022-04-20 22:50

我来回答

4个回答

热心网友 时间:2023-11-09 13:17

应该是溢出了,两个数最大为255时,乘积最大为65535,结果需要一个16位的无符号整数才能保存,当乘数再大时,保存结果的数需要定义为更大一点的整型,如long

热心网友 时间:2023-11-09 13:17

你的程序有两个问题:
1、你首先要保证20个数字的平方和不超过4字节长
2、关键是LeakArray的定义是怎么样的,如果是INT8U型的数组,那他们的乘积还是INT8U的,其进位会被丢失,此时就需要强制类型转换:例如:x=x+(INT32U)LeakArray[i]*(INT32U)LeakArray[i];

热心网友 时间:2023-11-09 13:17

20个数的平方和,超过INT32U了,先溢出了,再求平均值就已经不对了,需要优法算法
还是直接把改好的给你吧,采不采纳是你的事情
//大于20的部分是先除20的商求和 小于20的部分(余数)先求和了再除以20,最后两部分和起来
//这样在求和时就不会有溢出
INT32U x=0,x1;
INT8U i;
INT16U s,s1=0; //返回结果
for (i=0;i<20;i++)
{
x1 = LeakArray[i]*LeakArray[i]
x += x1/20;
s1+= x1%20;
}
x = x+s1/20;
s = sqrt(x);

热心网友 时间:2023-11-09 13:18

溢出了啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com