2012-09-20 446 views
0

可能重複的實際應用:
practical applications of bitwise operations位運算符

我一直在編程了好幾年,我一直想知道關於位運算符的實際應用。
在我的編程經驗中,我不必使用按位運算符。 他們什麼時候最常用? 在我的編程生涯中,我需要學習這些嗎? 謝謝。 友善地, 詹姆斯

+0

做任何一種低級別的工作,你在操縱事物二進制,你會發現他們*真實*有用。根據您使用的語言,您通常可以將位字段打包爲整數並節省內存。 –

回答

1

按位操作經常使用接近硬件 - 打包數據,壓縮或打包多個布爾值到一個字節。按位操作直接映射到處理器指令,並且通常非常快。

如果您正在使用I/O或設備接口,則按位操作變得非常必要 - 將位域的各個部分分隔爲重要數據。

或者您可以將它用作快速乘以2。 :)

1

另一個有趣的使用二進制和位twiddling。

將莫爾斯碼打包成單個字節。一個.0-爲1

A = .- 
A = 00000001xB 
// Add a 'start bit' 

A = 00000101xB 

移位大約8倍,就當你發現起始位演奏音色。

+------- Monitor this position 
    V 
A = 00000101 // Starting off 
A = 00001010 // Nothing yet 
A = 00010100 // Still nothing 
A = 00101000 // WOw, a lot of nothing 
A = 01010000 // Our boring life, we do nothing 
A = 10100000 // Wow! A start bit! Prep to play sound. 
A = 01000000 // Play a short 
A = 10000000 // And play a long. 
1

我沒有必要它編碼帕斯卡我用它來乘或除每當除數或乘法是2

顏色的功率存儲在一個字節與文本顏色的時候,但最近回低4位和高4位背景色。

使用c < < 4而不是c * 16,c >> 4而不是c/16來保存或檢索背景的速度要快很多倍。

並用c檢索文本顏色< < 4 >> 4由於某種原因也快於c & 15(bitvize和)。可能是註冊相關的;)但那是我頭上的方式:D

但是除非你正在進行校驗和計算,壓縮或加密,否則你可能無法做到。

即使您可以將位存儲在int中,驅動程序也可以以任何方式爲您優化內容,並且可以使用Flag枚舉將位標誌自動裝入字節,字或整數值中。

所以我猜想,因爲你還沒有找到使用,你可能不會在他們有意義的領域工作。