關於位運算:
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...