Я пытаюсь упростить дроби в двоичном с этим кодом, который проверяет, если значение четное:Бесконечный цикл при упрощении фракций в двоичном в C
int is_even(floatlet value){
if(value & 1) return 0;
return 1;
}
И это в то время как петля держит немного смещается, пока значение не будет странный.
while(is_even(numerator) && is_even(denomExp)){
numerator >>= 1;
denomExp <<= 1;
}
Цикл while продолжает бесконечный цикл. Мне интересно, почему? Мы выполнили тест, и функция is_even работает нормально. Благодаря!
Что такое 'floatlet'? Каковы типы «числитель» и «знаменатель»? – chqrlie
a) 0 четный, и поэтому 0/2 и 0 * 2. b) Вы не потрудились показать объявления или значения числителя и denomExp ... как вы можете ожидать, что кто-либо ответит на ваш вопрос без них? –
Это миниатюрное представление с плавающей запятой числа с плавающей запятой в 8 бит. Числитель и знаменатель - это целые числа. – skaggs