.h檔案
#ifndef _mp_h
#define _mp_h
#define _reentrant
#include
#include
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
#define mp_wbits 32u
typedef uint8_t byte;
typedef uint32_t mpw;
typedef uint16_t mphw;
#define mp_hwbits (mp_wbits >> 1)
#define mp_wbytes (mp_wbits >> 3)
#define mp_wnibbles (mp_wbits >> 2)
# define mp_words_to_bits(x) ((x) << 5)
# define mp_words_to_nibbles(x) ((x) << 3)
# define mp_words_to_bytes(x) ((x) << 2)
# define mp_bits_to_words(x) ((x) >> 5)
# define mp_nibbles_to_words(x) ((x) >> 3)
# define mp_bytes_to_words(x) ((x) >> 2)
#define mp_msbmask (((mpw) 0x1) << (mp_wbits-1))
#define mp_lsbmask ((mpw) 0x1)
#define mp_allmask ~((mpw) 0x0)
#ifdef __cplusplus
extern "c"
#endif
#endif
.c 檔案
#include "o_i.h"
//#ifndef a**_mpzero
void mpzero(size_t size, mpw* data)
//#endif
//#ifndef a**_mpmszcnt
size_t mpmszcnt(size_t size, const mpw* data)
break;
}else
zbits += mp_wbits;
}return zbits;
}//#endif
//#ifndef a**_mpbits
size_t mpbits(size_t size, const mpw* data)
//#endif
int i2osp(byte *osdata, size_t ossize, const mpw* idata, size_t isize)
if (significant_bytes)
} while (significant_bytes);
#else
/* just copy data past zero bytes */
memcpy(osdata, ((byte*) idata) + (max_bytes - significant_bytes), significant_bytes);
#endif
}return 0;
}return -1;
}int os2ip(mpw* idata, size_t isize, const byte* osdata, size_t ossize)
required = mp_bytes_to_words(ossize + mp_wbytes - 1);
if (isize >= required)
if (b == 0)
b = mp_wbytes;
while (ossize--)
}return 0;
}return -1;
}int hs2ip(mpw* idata, size_t isize, const char* hsdata, size_t hssize)
while (hssize)
*(idata++) = w;
hssize -= chunk;
}return 0;
}return -1;
}//#ifndef a**_mpmultwo
int mpmultwo(size_t size, mpw* data)
return (int) carry;
}//#endif
//#ifndef a**_mpsetw
void mpsetw(size_t size, mpw* xdata, mpw y)
//#endif
測試檔案:
#include
#include "o_i.h"
void hexdump(byte* b, int count)
if (i & 0xf)
printf("/n");
}int main()
協同過濾I2I的簡單實現
基於物品的協同過濾是目前業界應用最多的演算法。可以通過下面公式定義物品的相似度 w i,j n i n j n i n j w frac wi,j n i n j n i n j 這裡,分母 n i n j n i cap n j n i n j 是同時喜歡物品i和物品j的的使用者數。為了減輕熱門物...
STM32的I2C特性及架構
軟體模擬協議 使用cpu直接控制通訊引腳 gpio 的電平,產生出符合通訊協議標準的邏輯。硬體實現協議 由stm32的i2c片上外設專門負責實現i2c通訊協議,只要配置好該外設,它就會自動根據協議要求產生通訊訊號,收發資料並快取起來,cpu只要檢測該外設的狀態和訪問資料暫存器,就能完成資料收發。這種...
實現鍊錶及相關的方法 2
思路 下面提供兩種方法,其實大同小異,但是因為鍊錶的最後乙個元素需要指向空,如果少了這個就會出現問題。所以在方法二中,遍歷的過程就將末尾指向空。方法一 將大的資料放在x的右邊,小的資料放在x的左邊 public listnode parttition int x else else else cur...