test12 1228 位運算 單詞翻轉

2021-09-07 04:49:00 字數 2326 閱讀 8661

關於位運算:

0與任意數     相&   都為0

1與任意數     相|   都為1             1&0 = 0 ,1^1 = 1

乙個數異或它本身,結果為0        ------- 3 ^ 3    -> 11 ^ 11  == 0

乙個數異或 0,結果為它本身       --------2 ^ 0    ->  10 ^ 00 == 10

1.編寫函式:

unsigned int reverse_bit(unsigned int value);

這個函式的返回值value的二進位制位模式從左到右翻轉後的值。

如:在32位機器上25這個值包含下列各位:

00000000000000000000000000011001

翻轉後:(2550136832)

10011000000000000000000000000000

程式結果返回:

2550136832

#include typedef unsigned int uint;  

uint reverse_bit(uint value)

return sum;

}int main()

2.不使用(a+b)/2這種方式,求兩個數的平均值。

int main()

3.程式設計實現:

一組資料中只有乙個數字出現了一次。其他所有數字都是成對出現的。

請找出這個數字。(使用位運算)

int main() ;

int len = sizeof(arr) / sizeof(arr[0]);

int answer = 0;

//分析:

//乙個數異或它本身 3 ^ 3 -> 11 ^ 11 == 0

//乙個數異或 0 -> 10 ^ 00 == 10 即結果為它本身

for (int i = 0; i < len; i++)

printf("單獨的那個數為:%d\n", answer);

system("pause");

return 0;

}

4.有乙個字元陣列的內容為:"student a am i",

請你將陣列的內容改為"i am a student".

要求:不能使用庫函式。

只能開闢有限個空間(空間個數和字串的長度無關)。

student a am i

i ma a tneduts

i am a student

void swap(char* x, char* y) 

void rev_string(char* left, char* right)

}int main() }

printf("%s\n", arr);

system("pause");

return 0;

}

這個演算法有點兒問題,在student a am i前面需要加乙個『 』(空格符),不然翻轉後的字串i ma a tneduts,在開始第二段將每個單詞分別翻轉的時候就會在最後乙個單詞tneduts後因為缺少空格符,導致不會翻轉最後乙個單詞,目前沒有考慮到合適的演算法,只能先將就著用了

ps:在剛開始解決問題的時候毫無頭緒,然後就開始寫注釋,每一句話都要注釋,然後慢慢的就找到了思路。是乙個不錯的額解決問題的方法,在沒有思路的時候,就把腦海裡的東西全部都寫下來,找規律,最後就會有解決方案。

void swap(char* x, char* y) 

void rev_string(char* left, char* right)

}void rev_word(char* string)

char* tmp = end;

//用臨時指標存放此時的end指向

//然後將這個空格前的單詞進行逆序。

rev_string(start, tmp - 1);

start = tmp + 1;

end = tmp + 1; }}

int main()

函式rev_word的內層while迴圈判定條件必須新增*turn != '\0',不然內迴圈在指向tneduts的s時,下一步指向\0直接退出外迴圈,不會將最後乙個單詞翻轉

《Thinking in java》基礎篇之位運算

分類 在計算機中所有資料都是以二進位制的形式儲存的。位運算其實就是直接對在記憶體中的二進位制資料進行操作,因此處理資料的速度非常快。符號位 二進位制數最高位表示符號位,0表示正數,1表示負數。原碼 整數的二進位制數。反碼 符號位不變,其餘部分取反。補碼 原碼取反 1,符號位不變。或者說反碼 1,符號...

enum flags 列舉Flags標示 位運算子

c 位運算 詳見 2012 04 23 10 26 06 分類 程式 net 舉報 字型大小訂閱 flags關鍵字允許我們在使用.net列舉變數時,使用多個組合值,多個值的賦值方法是使用關鍵字 即weekdays weekdays weekdays.monday weekdays.tuesday 判...

ByteArray的操作總結 複製 列印 位運算

1.位元組陣列的複製 method a array.clone clone返回的是object物件,需要強型別轉換 clone會建立乙個新的物件,並將value賦給dec byte src new byte 20 byte dst new byte 20 dst byte src.clone met...