导航:首页 > 数据处理 > 32位数据怎么样获取每一位状态

32位数据怎么样获取每一位状态

发布时间:2023-07-11 20:37:57

㈠ 单片机怎么处理32位数据

#include <stdio.h>

//fl 第一个64位整数的低32位
//fh 第一个64位整数的高32位
//sl 第二个64位整数的低32位
//sh 第二个64位整数的高32位
//ol 结果值64位整数的低32位指针
//oh 结果值64位整数的高32位指针
void i64mul(__int32 fl, __int32 fh,__int32 sl, __int32 sh, __int32 *ol, __int32 *oh)
{
unsigned __int16 f[4]={fl & 0xFFFF,(unsigned __int32)fl >> 16,fh & 0xFFFF,(unsigned __int32)fh >> 16};
unsigned __int16 s[4]={sl & 0xFFFF,(unsigned __int32)sl >> 16,sh & 0xFFFF,(unsigned __int32)sh >> 16};
unsigned __int16 o[8]={};

int nf=0,ns=0,no;

if(f[3]&0x8000)
{
nf=1;
for (int i=0;i<4;i++)
f[i]=~f[i];
for (int i=0;i<4 && !++f[i];i++)
;
}
if(s[3]&0x8000)
{
ns=1;
for (int i=0;i<4;i++)
s[i]=~s[i];
for (int i=0;i<4 && !++s[i];i++)
;
}
no=nf ^ ns;
for (int i=0;i<4;i++)
{
for (int j=0;j<4;j++)
{
unsigned __int32 t=f[j]*s[i]+o[i+j];
o[i+j]=t & 0xFFFF;
t>>=16;
for (int k=i+j+1;k<8;k++)
{

t=t+o[k];
o[k]= t & 0xFFFF;
t>>=16;
}
}
}
if(no)
{
for (int i=0;i<8 && --o[i]==0xFFFF;i++)
;
for (int i=0;i<4;i++)
o[i]=~o[i];
}
*ol=o[0]+((unsigned __int32)o[1]<<16);
*oh=o[2]+((unsigned __int32)o[3]<<16);
}

int main()
{
/*
你的用法为

计算data32l,data32h乘7
i64mul(data32l,data32h,0,7,&data32l,&data32h);

计算data32l,data32h乘_data32l,_data32h 也就是两个64位数相乘
i64mul(data32l,data32h,_data32l,_data32h,&data32l,&data32h);
*/

//下面是一个在PC机上验证函数正确的样本
__int64 o2=0,o,f,s;
f=-1234899233;
s=1567991233;
o=f*s;

i64mul(f,f>>32,s,s>>32, (__int32*)&o2,(__int32*)&o2+1);

if(o==o2)
{
printf("计算正确\n");
}
f=1234899999233;
s=1567999991233;
o=f*s;

i64mul(f,f>>32,s,s>>32, (__int32*)&o2,(__int32*)&o2+1);

if(o==o2)
{
printf("计算正确\n");
}
}

阅读全文

与32位数据怎么样获取每一位状态相关的资料

热点内容
宝叶生物技术怎么样 浏览:15
电话手表如何查看微信信息 浏览:99
海鲜批发市场扇贝丁为什么没有鲜甜味道 浏览:531
手机插上电脑怎么没有驱动程序 浏览:593
程序员那么可爱一集多少时间 浏览:307
个人财务代理记账多少钱 浏览:595
市场服务科怎么能减少调整计划 浏览:944
想找个便民市场太原哪里有 浏览:654
去华东城水果市场怎么走更近 浏览:469
代理水果没有季节性水果怎么办 浏览:569
淘宝铜钱怎么交易 浏览:232
三菱m70系统如何看剩余程序 浏览:564
做市级代理需要哪些条件 浏览:275
产品监制怎么做 浏览:506
互联网技术是做哪些 浏览:955
虾皮数据看板在哪里 浏览:554
华东市场属于哪个街道 浏览:110
不让此卡交易怎么回事 浏览:851
手机后台如何关闭程序 浏览:370
湖南应用技术学院辅导员怎么样 浏览:252