線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:995
推到 Plurk!
推到 Facebook!

關於字元陣列的使用

答題得分者是:richtop
hdilwy
初階會員


發表:18
回覆:65
積分:41
註冊:2004-08-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-02 23:09:27 IP:219.68.xxx.xxx 未訂閱
請問各位大大: 我有一個01的字元陣列[做字元陣列是因為程式內其他部分的需求] 01100110…10010010 <=目前是做64位元的 如果我要向左旋轉或向右旋轉有什麼比較好的演算法嗎?不想一個一個搬~ 1100110…100100100 <=這是旋轉1個位元 如果題意不清請告知謝謝 在這邊先謝過了~
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-02 23:47:44 IP:211.76.xxx.xxx 未訂閱
hdilwy 您好:    底下是利用memmove(.)做記憶體整塊搬移,請參考修改。    
//---------------------------------------------------------------------------
void shr(char *str, int len) // len : the length of str
{ char ch;      ch = str[len-1];
  memmove(str 1, str, len-1);
  str[0] = ch;
}    void shl(char *str, int len)
{ char ch;      ch = str[0];
  memmove(str, str 1, len-1);
  str[len-1] = ch;
}    void __fastcall TForm1::Button1Click(TObject *Sender)
{ char str[65]; // NULL-terminated string      for (int k=0; k<64; k  )
     str[k] = '0'   random(2);
  str[64]=0;      ListBox1->Items->Add(str);      shr(str,64);
  ListBox1->Items->Add(str);      shl(str,64);
  ListBox1->Items->Add(str);
}
//---------------------------------------------------------------------------
RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
hdilwy
初階會員


發表:18
回覆:65
積分:41
註冊:2004-08-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-03 09:57:59 IP:140.128.xxx.xxx 未訂閱
To RichTop: 謝謝提供這個方法,已經可以work了. 又學了一招了.^^~ 另外我查書有查到可以使用 << 或是 >> 但是我自己在測試的時候卻出現了問題, 請問一下這是在什麼情形下使用這個就可以了~ 再次感謝大大的指導.
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-03 11:06:01 IP:211.76.xxx.xxx 未訂閱
hdilwy 您好:    您說的應該是C/C++中的位元移位運算,<< (左移),>> (右移)。 這個方法的限制是只能用compiler所提供之最大範圍的數值。 還有使用時,建議將變數宣告成unsigned。 如果要使用64個位元,就要利用BCB延伸宣告64 bits的整數型態:unsigned __int64。    相關程式碼,以紅色補充於上一篇,請參考修改。
系統時間:2024-11-26 13:25:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!