English Français Español Русский 中文 Deutsch Português عربي italiano 日本



         Некоторые вопросы сейсморазведки



 Домашняя  Сервис  Софт  Учебный материал  Контакты

Двоичная арифметика

Двоичная арифметика Двоичная арифметика достаточно проста для понимания компьютера!

Наверняка нечто вроде вы (давным-давно) делали в школе – таблица сложения десятичных чисел. Рядом с ней (кое-что попроще!) двоичная версия:
 

+

0

1

2

3

4

5

6

7

8

9

0

0

1

2

3

4

5

6

7

8

9

1

1

2

3

4

5

6

7

8

9

10

2

2

3

4

5

6

7

8

9

10

11

3

3

4

5

6

7

8

9

10

11

12

4

4

5

6

7

8

9

10

11

12

13

5

5

6

7

8

9

10

11

12

13

14

6

6

7

8

9

10

11

12

13

14

15

7

7

8

9

10

11

12

13

14

15

16

8

8

9

10

11

12

13

14

15

16

17

9

9

10

11

12

13

14

15

16

17

18

  
Десятичная

 

+

0

1

0

00

01

1

01

10

 
Двоичная

 
Логика двоичной таблицы почти очевидна. Если оба значения одинаковы, то ставится ноль. Если они разные, то ставится единица. Если оба значения единицы, тогда одна из них переносится в следующую колонку.



Вот простой пример бинарной арифметики с использованием 16-битных слов - сложение 1234510 и 1487210:
 

 

12345

 

 

0

0

1

1

0

0

0

0

0

0

1

1

1

0

0

1

+

14872

 

+

0

0

1

1

1

0

1

0

0

0

0

1

1

0

0

0

 


 

 


 

27217

 

 

0

1

1

0

1

0

1

0

0

1

0

1

0

0

0

1

 
Вычитание выполняется прибавлением отрицательных чисел, когда отрицательные числа кодированы в дополнение до 2-х. Эта методика, известная как дополнение до 10 в десятичном мире, была давным-давно известна операторам счет, и она очень проста.
 
Предположим, что мы вычитаем 1234510 из 1487210 в двоичной системе. Выполняем это путем прибавления -12345 к 14872. Чтобы перевести 12345 в -12345, мы берем двоичный вариант (0011000000111001), переворачиваем каждый бит (1100111111000110) и добавляем "1" (1100111111000111). Это дает нам дополнение до 2-х числа 12345.

Теперь мы складываем -1234510 и 1487210:-
 

 

-12345

 

 

1

1

0

0

1

1

1

1

1

1

0

0

0

1

1

1

+

14872

 

+

0

0

1

1

1

0

1

0

0

0

0

1

1

0

0

0

 


 

 


 

2527

 

1

0

0

0

0

1

0

0

1

1

1

0

1

1

1

1

1

 
Это дает нам правильный ответ (252710), но один бит переходит из конца ответа. Этот бит игнорировался при вычитании.
 
Умножение выполняется смещением и сложением (сильно похоже на процедуру умножения вручную, но только умножение все время на "1" или "0"), а вычитание выполняется повторяемым прибавлением дополнений до 2-х и смещением, используя перемещающийся бит, чтобы решить, когда смещать! Все это может выполняться очень простой логической операцией на компьютерном CPU чипе.
 



 
Когда числа с плавающей запятой складываются, экспонента должна быть нормализована перед сложением. Попробуйте сложить add 1.0e+3 и1.0e-3 на калькуляторе. Калькулятор выполняет сначала эту нормализацию, чтобы выдать правильный ответ (1.000001e+3).

Это версия этого же сложения на IBM с плавающей запятой (один из наиболее популярных форматов для плавающей запятой). Этот формат использует 32 бита для каждого числа:
 

 

 

 

 

 

 

Экспонента

Мантисса

1.00E+03

=

1.95312510

x

29

кодировано как:

0

1

0

0

1

0

0

1

0

0

0

1

1

1

1

1

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1.00E-03

=

1.02410

x

2-10

кодировано как:

0

0

1

1

0

1

1

0

0

0

0

1

0

0

0

0

0

1

1

0

0

0

1

0

1

0

1

1

0

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нормализовано

0

1

0

0

1

0

0

1

0

0

0

1

1

1

1

1

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

 

 

 

 

 

 

0

1

0

0

1

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сложено

0

1

0

0

1

0

0

1

0

0

0

1

1

1

1

1

0

1

0

0

0

0

0

0

0

0

0

0

0

0

1

0

 
Ответ конвертируем и получаем 1000.00097610, что максимально близко к 1000.001 в этом формате.
 



И наконец, вот линия двоичных битов (128 байтов всего) – что они означают?

линия двоичных битов    

Ответ, конечно,… почти ничего! Нам необходимо знать формат определенного файла на диске или ленте, чтобы это расшифровать.

Эти биты могут представлять собой картинку (0=белый, 1=черный)



или шифрованный текст: _ _H _( _ÿ_ _@@ _ _ ____ __b/___""_ _,Q__,Q__.Y’__ß´_ ` _ 8___8___8|__ÿÂ` b__ B_ ___ _È__À_ð_aÕØ_¿ªè_XUx_ø?ð (Вряд ли!)


или это может быть часть сейсмической трассы, или музыка на лазерном диске.
часть сейсмической трассы

Мы теперь изучим некоторые форматы для сейсмических лент, как только разберемся с проблемой оцифровки.



Путь будут цифры ... Следующая страница