为什么我用C++计算比较大的数字的乘法算出来就不对.
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/29 12:32:11
为什么我用C++计算比较大的数字的乘法算出来就不对.
算出来这样的99789*915575=1170000459,明显错的嘛
算出来这样的99789*915575=1170000459,明显错的嘛
C++ 变量超出范围截断当给16位的unsigned short 对象赋值100000,赋的值是什么?
C++ primer参考答案是:
100000超过了16位的unsigned short类型的表示范围,编译器对其二进制表示截取低16位,相当于对65536求余(求模,%),得34464.
可能很多人不明白为什么要与65536求余,事实上:我们要取的是低十六位二进制数,超过的高进位部分全部去掉,而17位以上(包括17位)都将去掉,而17位二进制数是1 0000 0000 0000=65536
如果这个赋值数转化为二进制不是恰好17位而是18位19位...同样可以这样求余运算,原因是:高于17位都是65536的倍数(0倍或2倍),二进制是把每位的数加起来成为十进制,这样求模加法法则可知
最后高于十六位的与65536求余得到的都为0,剩下的不就是低十六位了.
C++ primer参考答案是:
100000超过了16位的unsigned short类型的表示范围,编译器对其二进制表示截取低16位,相当于对65536求余(求模,%),得34464.
可能很多人不明白为什么要与65536求余,事实上:我们要取的是低十六位二进制数,超过的高进位部分全部去掉,而17位以上(包括17位)都将去掉,而17位二进制数是1 0000 0000 0000=65536
如果这个赋值数转化为二进制不是恰好17位而是18位19位...同样可以这样求余运算,原因是:高于17位都是65536的倍数(0倍或2倍),二进制是把每位的数加起来成为十进制,这样求模加法法则可知
最后高于十六位的与65536求余得到的都为0,剩下的不就是低十六位了.
为什么我算出来的总是不对,
我算出来不对的数学题目
为什么标准体重的计算公式算出来正常体重都很重啊 (实际正常体重在生活中就比较胖了)
计算1!+2!+...+20!的c语言程序 帮我看看这是哪里错了 算出来的结果不对阿.
就这样,我算出来答案总是不对
求矩阵的逆阵!为什么我按照那个公式算出来的答案不对啊!
第八题,为什么我算出来总不对,
内齿轮或说齿圈的分度圆计算公式是D=MZ吗为什么算出来不对?
急,求质量的,我算出来的有点不对
在EXCEL里,我用的公式算的乘法,现在要在乘法算出来的数前面加上美元符号$,但是一加,公式就不能用了
一道关于定积分的问题如果我把sinx换成t,为什么算出来的答案不对?
cosx-sinx的辅助角问题为什么用公式算出来不对?我用公式asinx+bcosx=√(a^2+b^2)sin(x+θ