1
次の場合に返される式を書く必要がありますany bit in the least significant byte of k equals 1
論理演算子を使用できません。
使用する最下位ビットをマスクするには
(x & 0xFF);
上記が当てはまる場合、論理演算子なしで返すにはどうすればよいです0
か?1
1
次の場合に返される式を書く必要がありますany bit in the least significant byte of k equals 1
論理演算子を使用できません。
使用する最下位ビットをマスクするには
(x & 0xFF);
上記が当てはまる場合、論理演算子なしで返すにはどうすればよいです0
か?1
これは、論理演算子のようにぼんやりとさえ見えないソリューションです。
((unsigned char)k + 255) / 256
1
ゼロをそのままにして、ゼロ以外の値を に強制する一般的なトリックを次に示します。
return !!(x & 0xFF);
これは、がゼロの場合にのみゼロに評価されx & 0xFF
ます。それ以外の場合、これは に評価され1
ます。
論理演算子を完全に回避する、はるかに醜い式もあります。
return ((x>>0)|(x>>1)|(x>>2)|(x>>3)|(x>>4)|(x>>5)|(x>>6)|(x>>7)) & 1;
@rici さんがいいです。(unsigned char) キャストを使用したくない場合:
((((x%256)+256)%256)+255)/256