#include <stdio.h>
#include <stdlib.h>
#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
    unsigned short k3, k1, k2, k4;
    unsigned int final_val;
    unsigned short sc1,sc2,sa1,sa2;
    unsigned short *val1, *val2;
    unsigned int F1 = 0, F2 = 0, F3= 0, F4 = 0;
    char m1[2] = {'z', 'y'};
    char m2[2] = {'y', 'x'};
    val1 = (unsigned short *)m1;
    val2 = (unsigned short *)m2;
    printf("\n m1=0x%x; m2=0x%x \n", *val1, *val2);
    char *c1 = (char *)m1;        //
    char *c2 = (char *)(m1 + 1);  //
    char *a1 = (char *)m2;        //
    char *a2 = (char *)(m2 + 1);  //
    sc1 = *c1;
    sc2 = *c2;
    sa1 = *a1;
    sa2 = *a2;
 F1 = sc1 * sa1;
    if ((F1 & 0xff00) > 0)
    {
        k1 = (F1 & 0xff00) >> 8;
        F1 = F1 & 0xff;
        F2 += k1;
    }
    F2 += sc2 * sa1;
    if ((F2 & 0xff00) > 0)
    {
        k2 = (F2 & 0xff00) >> 8;
        F2 = F2 & 0xff;
    }
    F3 = sc1 * sa2;
    if ((F3 & 0xff00) > 0)
    {
        k3 = (F3 & 0xff00) >> 8;
        F3 = F3 & 0xff;
        F4 += k3;
    }
    F4 += sc2 * sa2;
    if ((F4 & 0xff00) > 0)
    {
        k4 = (F4 & 0xff00) >> 8;
        //F4 = F4 & 0xff;
    }
final_val = F1 + ((F2 + F3) << 8) + ((k2 + F4) << 16);
printf("\nF1=0x%x, F2=0x%x, F3=0x%x, F4=0x%x final= 0x%x \n", F1, F2, F3, F4, final_val);
}
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号