?

Log in

No account? Create an account

Машинно-арифметическое - Ваши рубидии уже у кобальта во ртути

Dec. 3rd, 2014

08:50 pm - Машинно-арифметическое

Previous Entry Share Next Entry

Comments:

[User Picture]
From:spamsink
Date:December 4th, 2014 08:24 am (UTC)
(Link)
Допустим. Тогда это значение при imax == 0111...1 должно оказаться результатом imax*2+1, т.е. 0111...1*2 == 0111...1, из чего вытекает saturation к значению, не являющемуся максимальным. Не бывает.
(Reply) (Parent) (Thread)
[User Picture]
From:avva
Date:December 4th, 2014 08:41 am (UTC)
(Link)
huh? в условии спрашивается, как устроить, чтобы *2+1 НЕ приводило к максимальному значению ("не будет работать"), ну так оно и не приводит.

Максимальное значение 10000....0
Прыжки *2+1 приводят к 0111....1, следующий такой прыжок даст 1111...1 = -1, отрицательное число, поэтому алгоритм останавливается на 0111...1, но на самом деле максимальное целое значение на 1 больше.
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:December 4th, 2014 08:46 am (UTC)
(Link)
При желаемом понимании слова "реалистичная", пожалуй, правильно. :)
(Reply) (Parent) (Thread)
[User Picture]
From:sab123
Date:December 4th, 2014 06:01 pm (UTC)
(Link)
Мне пришло в голову просто поменять местами представление положительных и отрицательных чисел в дополнительном коде. Что приводит к тому же эффекту.
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:December 4th, 2014 06:11 pm (UTC)
(Link)
Строго говоря, это нельзя. Стандарт допускает 3 варианта: two's complement, one's complement, sign + magnitude.
(Reply) (Parent) (Thread)
[User Picture]
From:sab123
Date:December 4th, 2014 06:56 pm (UTC)
(Link)
Про стандарт в вопросе речи не было.
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:December 4th, 2014 07:11 pm (UTC)
(Link)
В вопросе было слово "реалистичная".
(Reply) (Parent) (Thread)
[User Picture]
From:sab123
Date:December 4th, 2014 07:14 pm (UTC)
(Link)
Ну так реалистичная. Если по какой-то причине очень-очень надо расширить диапазон представления положительных чисел на единичку, то самый дешевый способ это сделать - вот так.
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:December 4th, 2014 06:12 pm (UTC)
(Link)
Это не будет соответствовать стандарту. Стандарт допускает 3 варианта представления целых чисел: two's complement, one's complement, sign + magnitude.
(Reply) (Parent) (Thread)
[User Picture]
From:avva
Date:December 4th, 2014 06:25 pm (UTC)
(Link)
И зря, кстати. И вообще, это в C, а в C++ стандарт разрешает, насколько я вижу. В записи не указан язык :)
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:December 4th, 2014 06:52 pm (UTC)
(Link)
Спасибо, исправил. :)
(Reply) (Parent) (Thread)
[User Picture]
From:sab123
Date:December 4th, 2014 07:18 pm (UTC)
(Link)
Реализация на странном железе не обязана соответствовать стандарту. Тут уж какое есть - такое есть, придется писать нестандартные программы.
(Reply) (Parent) (Thread)