莫頓碼Morton code的c語言實現

2021-08-26 20:26:29 字數 1129 閱讀 3469

十進位制 morton碼可以使用柵格單元的行列號計算

###原理部分

遵循c語言規範,矩陣的第一行為「0」行、第一列為「0」列,先將十進位制的行列號轉換成二進位制數,進行「位」運算操作,即行號和列號的二進位制數兩兩交叉,得到以二進位制數表示的md碼,再將其轉換為十進位制數。

例如圖中第二行和第三列對應的柵格單元,其二進位制的行列號分別為:i=0010,j=0011;得到的md碼為:md=(0001101)2=(13)10;用類似的方法,也可以由md碼反求柵格單元的行列號。

###基本演算法

// 輸入 x 和 y, 交叉後為 xyxyxy。  

unsigned short x; // x在奇數字

unsigned short y; // y在偶數字

unsigned int md = 0; // 儲存生成的md碼

for (int i = 0; i < sizeof(x) * char_bit; i++) // 核心交叉演算法,基本思想為移位和位運算..

###完整**

#####**一:

#include#include//定義char_bit

int main(void)

printf("\n");

}

return 1;

}

#####**二:

#include#includevoid to_binary1(unsigned short n);

void to_binary2(unsigned int n);

int main(void)

printf("done.\n");

return 0;

}void to_binary1(unsigned short n)

void to_binary2(unsigned int n)

C 十進位制莫頓碼與十進位制行列號互轉

十進位制的行列號 從0開始 轉為十進位制的莫頓碼 public static intcalcmorton int row,int col return m 將十進位制的莫頓碼轉為十進位制的行列號 從0開始 public static void frommorton int m,outint row,...

電腦卡頓並非C盤惹的禍

造成系統卡頓跟c盤剩餘容量是有一定關係的。我們要保證c盤容量不低於1g xp系統不得低於500m 如果容量過低的話就會出現卡頓,甚至出現系統癱瘓的狀況,因為系統的執行需要快取空間,所以 才有這個1g的空間要求,過多也沒意義。電腦卡頓要從電腦執行速度上找問題 決定執行速度的配件 1 起決定性因素的是c...

c莫比烏斯函式 關於莫比烏斯環的一些猜想。

更新一次,前幾天突然讚變多了,今天看復仇者聯盟4,發現他們穿梭時空的方式片段竟然是莫比烏斯環首尾鏈結,和我一年前想著玩兒的好類似.今天看最強大腦,了解乙個新名詞 莫比烏斯環 將一張紙條的一側旋轉180 後與另一側相連,可以形成乙個環,而這個換沒有正反面之分,也就是並不是每乙個事物都具有兩面性。0.首...