请教个Linux内核空间32位乘法的问题
开发平台:Linux2.6、PowerPC
内核空间涉及到两个32位数乘法的计算,例如c=a*b;
c是64位,a、b都是32位,但计算结果只能得出实际值的低32位。
求助下OL大神,不甚感谢!
发段程序过来看下
程序不好拷贝,就是个乘法,然后printk打印出来的,64位输出%llu,应该也没问题
内核中计算32位乘法,没什么特殊要注意的吧,不会像除法一样麻烦吧
锦华流年 #2
发段程序过来看下
默认不支持64位乘法吧,估计得修改config文件
我不是纸杯 #6
a,b给成64位算算
和内核没啥关系吧 整数的话自己转到unsigned long long再计算 防止发生截断误差
否则a * b的结果是32位的 赋值给64位的变量 高位当然是0了
a,b都转到64位?编译时缺少库
锦华流年 #8
和内核没啥关系吧 整数的话自己转到unsigned long long再计算 防止发生截断误差 否则a * b的结果是32位的 赋值给64位的变量 高位当然是0了
贴错误信息
田田QQ #9
a,b都转到64位?编译时缺少库