簡體   English   中英

使用位操作的位掩碼 &

[英]Bit masking using bit operation &

我的教科書說

“按位與運算符 & 通常用於屏蔽某些位集,例如 n = n & 0177;除了 n 的低 7 位之外,所有位都設置為零。”

但是,根據我的理解,0177的二進制形式是101010001,所以操作n = n & 0177應該保留n的第1、5、7和9位,並將所有其他位設置為零。

誰能指出我理解這一點的錯誤在哪里?

我相信除了 0177 的二進制表示之外,您的理解是正確的。如果這是一個十進制數,它將是 01111111,如果它是十六進制(我懷疑它是),請不要忘記 0x 前綴。 然后是 101110111 所以它會保留不同的位。 不確定你從哪里得到 101010001。如果這沒有意義,請告訴我。

如評論中所述,當 0177 是八進制數(以 8 為基數,每位 3 位)時,它將起作用。

在幾種語言(例如 javascript)中,前導 0 表示八進制數:

var n = 0177; // n now contains the decimal value 127

所以八進制 0177 == 二進制 01 111 111 == 十進制 127

這(0 前綴表示八進制)也是 javascript 中parseInt在月份輸入0809時失敗的原因,除非您明確指定基數為 10。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM