簡體   English   中英

使用按位運算符的條件語句

[英]Conditional Statement using Bitwise operators

所以我看到這個問題已經被問過了,但是答案有點含糊而且沒有幫助。 好的,我需要僅使用 "& ^ ~ ! + | >> <<" 來實現 c 表達式

表達式需要類似於:a? b: c

因此,據我所知,表達式需要類似於:

return (a & b) | (~a & c)

這在 a = 0 時有效,因為它與 b 的 anding 將給出零,然后 or 表達式將返回右側, (~a & c)這是有效的,因為 ~0 給出所有的值,並且 c 與所有的值一起返回 c .

但是,當 a > 0 時,這不起作用。有人可以嘗試解釋為什么會這樣,或者如何解決它嗎?

我會使用!!aa轉換為 boolean,以獲得 0 或 1.x x = !!a

然后我會用二進制補碼否定它。 由於您沒有可用的一元減號,因此您使用 2 的補碼否定的定義:反轉位,然后加一: y = ~x + 1 這將清除所有位,或設置所有位。

and我直接用一個變量y & b ,它與另一個變量相反: ~y & c 這將為其中一個表達式提供 0,為另一個提供原始變量。 當我們or那些在一起時,零將不起作用,因此我們將獲得原始變量,保持不變。

換句話說,如果 a 為false (即 0),則需要a將所有位設置為 0,如果a為真(即a > 0 ),則需要將所有位設置為 1。

對於前一種情況,工作已經為您完成; 對於后者——嘗試計算表達式~!1的結果。

暫無
暫無

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

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