2015-06-19 5 views
0

Я хотел бы преобразоватьбит вертел, чтобы знаковый бит 32 бит междунар

(n < 0 ? 1 : 0) 

в бит вертел (при условии, 2s дополняют арку).

по эксплуатационным показателям.

+1

Разрешены ли беззнаковые сдвиги? – harold

+3

Вы не доверяете своему компилятору? – leppie

+0

Да, беззнаковые сдвиги разрешены. – Jacko

ответ

2

С без знака сдвига,

x = n >>> 31; // Java's unsigned shift 

x = (int)((uint)n >> 31); // C#'s unsigned shift, the casts are effectively nop 

GCC делает это автоматически, другие компиляторы могут также. Или нет. Ваш пробег может отличаться.

Смежные вопросы