Bitwise operation, 以 Golang 為例
Introduction 最近在寫leetcode的第190題,發現自己對Bitwise運算不太了解,所以想寫一篇文章當做學習的紀錄。Bitwise從名字來看就是要對bit做運算,對二進位的數字進行操作。這類運算常被用於嵌入式裝置這種記憶體受限的環境、權限管理的flag檢查,以及Unix檔案系統的檔案權限設置等實際應用場景。雖然工作上好像很少實際用到Bitwise 運算,但理解它不僅有助於解題,我想也會對系統底層的實現原理更有概念。 Bitwise所包含的operator如下: 右移 >> 左移 << AND & OR | XOR ^ AND NOT &^ (Go 特有) Right Shift >> 將數字向右移, 左邊根據最高位置決定補上 0(正數)或 1(負數),等同於數字除以 2^n。 x := 20 // 00010100 x = x >> 2 // 00000101 = 5 Left Shift << 將數字向左移動,等於數字乘以 2^n 。 x := 20 // 00010100 x = x << 2 // 01010000 = 80 AND & 對每個位元進行 AND 運算。只有當兩個位元都為 1 時,結果才為 1,否則為 0。...