Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двоичные значения, Помогите начинающему 
:(
    Опции темы
GIK
Дата 13.2.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Всем привет.
Хочу разобратся в двоичной записи. Начал програмировать пол года назат и до сих пор не вникал в их суть.
Мне не понятно где находится знак в двоичном числе, например в байте он вроде как находится в последнем 7-ом бите, но как тогда получается значение -128, знак веть не может находится в последнем 7-ом бите, так, как тоько он может содержит максимальное значение 128 (максимальное в смысле одним значением) ?

1 0 0 0 0 0 0 0 - 128
01111111 - 127





--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Chingachguk
Дата 13.2.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 11
Всего: 18



Попробуй вывести различные числа ПОБИТОВО, например:

Код

var
 b: shortint;
 i: integer;
begin
 for b:=-128 to 127 do
   begin
      write('b=',b,' - ');
      for i:=7 dwownto 0 do write((b shr i) and 1);
      writeln;
   end;



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
GIK
Дата 13.2.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Цитата

Попробуй вывести различные числа ПОБИТОВО, например:

Я в этот код все равно не въеду smile , мне бы кто по точнее объяснил, что есть что в двоичном представлении, а то как то на JAVA без это не пишется уже.


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Akina
Дата 13.2.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(GIK @ 13.2.2006, 15:09 Найти цитируемый пост)
как тогда получается значение -128

Никак... диапазон знакового байтового - от минус 128 до плюс 127... маны читать надо внимательнее.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
GIK
Дата 13.2.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Цитата

Никак... диапазон знакового байтового - от минус 128 до плюс 127... маны читать надо внимательнее.

Может я вопрос не корректно задал, или вообще не то говорю...
-128 это минус 128, где это минус из 8 разрядного числа хранится, в каком бите?


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Akina
Дата 13.2.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Отрицательные числа хранятся в дополнительном коде. Т.е. наличие 1 в старшем бите действительно означает что число отрицательное, но это вовсе НЕ ОЗНАЧАЕТ, что сброс старшего бита приводит к получению того же по модулю положительного числа.

Смотри. Плюс единица - это 0000 0001. Сколько будет минус единица? Она должна быть такая, чтобы при сложении с единицей давать ноль. Следовательно минус единица - это не 1000 0001, как с первого взгляда кажется, а 1111 1111. действительно, сложив ее с плюс единицей, получим одни нули (и дополнительно перенос в 9 разряде, но это отдельная тема). И так с любой другой парой чисел... кроме минус 128. Оно в доп. коде = 1000 0000... и нет такого положительного (с нулевым старшим битом) числа, которое при прибавлении к нему даст ноль (что с переносом, что без) - как и проистекает из его десятичного значения.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.