3

1次の場合に返される式を書く必要がありますany bit in the least significant byte of k equals 1

論理演算子を使用できません。

使用する最下位ビットをマスクするには

(x & 0xFF);

上記が当てはまる場合、論理演算子なしで返すにはどうすればよいです0か?1

4

5 に答える 5

5

これは、論理演算子のようにぼんやりとさえ見えないソリューションです。

((unsigned char)k + 255) / 256
于 2013-10-01T01:38:42.650 に答える
3

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;
于 2013-10-01T01:21:42.290 に答える
2

@rici さんがいいです。(unsigned char) キャストを使用したくない場合:

((((x%256)+256)%256)+255)/256
于 2013-10-01T01:52:14.583 に答える