老鼠喝酒問題(二進位制編碼的妙用)

2021-06-05 06:17:54 字數 454 閱讀 9775

老鼠喝酒問題

一共1000瓶酒,其中一瓶有毒。如果乙隻老鼠喝了有毒的酒,會在一天之後死亡,那麼如果給你一天時間,然你判定哪瓶酒有毒,至少需要幾隻老鼠?

答案是10只。這個需要使用二進位制編碼來解決,1000瓶酒至少需要10位二進位制數來進行編碼。然後取十隻杯子分別代表這是個二進位制數的十個位,分別將1000瓶酒倒入其編碼為1的對應的杯子中。取十個老鼠分別喝十個杯子中的酒,一天之後,就可以根據喝那個杯子的老鼠死掉來確定出有毒的那瓶酒的編碼,從而確定哪瓶酒有毒。其根據就是只有有毒酒的編碼對應的毒死老鼠的杯子位置。這個題目就是利用了二進位制編碼的一些特性。還有一些其他的題目也使用這些特性,比如使用特殊的位運算,一般使用比較多的位運算就是與、或和異或。

這樣,就可以對應到現實生活中的一些為題,比如乙個類似的問題原本我們想需要用900多台伺服器來解決,經過這樣分析後就可以使用10臺伺服器來解決,大大節約了成本。

二進位制的妙用

對於一些有限型別的多選,資料庫儲存使用中間表顯得比較累贅,但是把值或id拼成串來存又會使查詢統計不可用。這種情況下,可以採用二進位制的方式來處理。提供者 北京網優通達網路技術 致力於 優化 應用場景 對有限型別進行多選,其中有限型別指永遠不會超過64個的選項。比如 使用者註冊選擇感興趣的產品線。一共...

二進位制的妙用

表示某個元素是否在集合中 因為二進位制每一位只有0和1兩種情況,所以二進位制每一位可以對應某個元素是否在這個集合中。整個二進位制數就構成了乙個集合,對應二進位制位為1的元素就在集合中,為0的就不在集合中。表示對乙個集合的每乙個元素是否進行某種操作 整個二進位制數表示對乙個集合整體進行的某種操作,對應...

二進位制的編碼

假設有乙個只有4位的二進位制 0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111,共16個數,來表示 8到7共16個數。很自然的我們想到用0000 0111來表示0 7.8到 1該用誰來表示呢...