簡體   English   中英

不明白為什么結果是一個

[英]Don't understand why result is one

我必須創建一個可以賦予最多32位int的函數。 如果奇數位是1,則應該返回1,否則返回0。 我知道如果它與掩碼不匹配,它將返回零,但是我不明白為什么如果與掩碼相匹配,它將返回一。 是因為在&比較之后結果不等於0,因此返回true,即為1?

int any_odd_one(unsigned x)
{

return (x&0xAAAAAAAA)!=0;

&是按位與運算符,它的工作原理是從左參數中取一個位,從右參數中取一個位,對它們進行“與”運算,然后將結果另存為結果。 它做到每一點。

因為當兩個參數均為'1'時'and'的結果只能為'1',所以將0xAAAAAAAA用作一個參數與將第二個參數的每個偶數位設置為'0'並保留所有奇數位具有相同的效果像他們那樣。

如果以上結果為“ 0”,則表示所有奇數位均為“ 0”。

還要記住,將整數轉換為布爾值時,除“ 0”以外的任何其他值都會轉換為true

暫無
暫無

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

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