使用3 uint8_t的C ++中的多数函数

时间:2015-04-27 09:44:56

标签: c++ bitwise-operators

uint8_t a = 0x01; //00000001
uint8_t b = 0xff; //11111111
uint8_t c = 0xf0; //11110000

maj(a,b,c) = 0xf1; //11110001

我不确定如何访问和比较每一位,以便我可以得出结果?

2 个答案:

答案 0 :(得分:6)

result = (a & b) | (b & c) | (c & a);

答案 1 :(得分:5)

@Henrik已经提供了一个很好的直接解决方案,需要5个操作。 FWIW如果效率是一个问题,你可以将其减少到4个操作:

result = (a & (b | c)) | (b & c);