| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > Двоичные значения |
| Автор: GIK 13.2.2006, 14:09 |
| Всем привет. Хочу разобратся в двоичной записи. Начал програмировать пол года назат и до сих пор не вникал в их суть. Мне не понятно где находится знак в двоичном числе, например в байте он вроде как находится в последнем 7-ом бите, но как тогда получается значение -128, знак веть не может находится в последнем 7-ом бите, так, как тоько он может содержит максимальное значение 128 (максимальное в смысле одним значением) ? 1 0 0 0 0 0 0 0 - 128 01111111 - 127 |
| Автор: Chingachguk 13.2.2006, 14:26 | ||
Попробуй вывести различные числа ПОБИТОВО, например:
|
| Автор: GIK 13.2.2006, 14:37 | ||
Я в этот код все равно не въеду |
| Автор: Akina 13.2.2006, 16:29 |
| Никак... диапазон знакового байтового - от минус 128 до плюс 127... маны читать надо внимательнее. |
| Автор: GIK 13.2.2006, 17:16 | ||
Может я вопрос не корректно задал, или вообще не то говорю... -128 это минус 128, где это минус из 8 разрядного числа хранится, в каком бите? |
| Автор: Akina 13.2.2006, 17:40 |
| Отрицательные числа хранятся в дополнительном коде. Т.е. наличие 1 в старшем бите действительно означает что число отрицательное, но это вовсе НЕ ОЗНАЧАЕТ, что сброс старшего бита приводит к получению того же по модулю положительного числа. Смотри. Плюс единица - это 0000 0001. Сколько будет минус единица? Она должна быть такая, чтобы при сложении с единицей давать ноль. Следовательно минус единица - это не 1000 0001, как с первого взгляда кажется, а 1111 1111. действительно, сложив ее с плюс единицей, получим одни нули (и дополнительно перенос в 9 разряде, но это отдельная тема). И так с любой другой парой чисел... кроме минус 128. Оно в доп. коде = 1000 0000... и нет такого положительного (с нулевым старшим битом) числа, которое при прибавлении к нему даст ноль (что с переносом, что без) - как и проистекает из его десятичного значения. |