Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






И побежала волна 1 на ум. Вот к чему приводит не понимание того, что делаешь! Что же потом удивляться, что Буран три часа не могли посадить.





 

 

Программист описывает переменные целого (заметьте, что пока мы имеем дело только с целыми числами) типа, указывая могут ли они иметь отрицательные значения в принципе (называются знаковыми signed) или нет.

У значений знаковых переменных есть знаковый разряд и максимальное число из - за этого меньше в два раза чем у unsigned.

 

Остался один лишь вопрос - кому всё это надо? Это надо тому, кто занимается или будет заниматься разработкой электронных приборов, писать драйверы для считывания регистров значений аналоговых приборов и дискретных датчиков. Как правило такие приборы сейчас имеют регистры, состоящие из двух байтов. Но вполне может быть, что в будущем и компьютеры и приборы будут иметь ячейки памяти, хранящие десятичные значения. Остальным для общего развития))) А пока что.... продолжим

На заре программирования люди вообще не писали программы, а в буквальном смысле прожигали их. Ячейки памяти заранее содержали тончайшие проволочки и память внешне напоминала пчелиные соты. Программист в нужных местах " пережигал" проволочку (забирал медок из соты) и таким образом обнулял бит. Так записывался код программы и компьютер его исполнял. Совсем не похоже на IPhone))) Слава богу так продолжалось не долго и люди придумали ферритовую память. Ячейками стали электрические магнитика. Если по катушке пропускали импульс тока положительной полярности, то магнитик запоминал единичку, а импульсом тока отрицательной полярности магнитик размагничивался и единичка сбрасывалась. Такая память была очень дорогая и очень громоздкая. Понятно, что такой памяти нельзя было иметь очень много. Поэтому компьютеры сначала имели процессоры сначала с 8-разрядными регистрами. Память надо иметь возможность адресовать. В 8 разрядной памяти можно было адресовать 256 страниц по 256 байт или 256 *256 = 65536 или 64 килобайта (один килобайт 210 байтов или 1024). Не густо(((

Затем регистры процессора стали 16-разрядными и адресуемая память увеличилась до 32767*32767 до 1 Гб. Но, как известно обычный человек запоминает до 7 чисел (именно поэтому номера телефонов за вычетом кодов оператора стараются не делать длиннее). Попробуйте в качестве тренировки запоминать двоичные шестнадцать разрядные числа и вы легко согласитесь со мной. Лично я хорошо помню числа 25-летний давности, до сих пор не потерявшие для меня смысл: 102077,102005,102012,102001 и т.д.

Если вы присмотритесь, то на рисунке ниже над клавишным регистром из шестнадцати клавиш белого и голубого цвета, то заметите что они сгруппированы (выделены чередованием цветов) по три (плюс одинокий левый, " знаковый" разряд). Кроме того над регистром начерчен белый трафарет, также обозначающий группирование разрядов по три.

Такой клавишный регистр был незаменимой штукой. Во-первых, на нём задавался номер операционной системы. В те времена конфигурация операционных систем задавалась в текстовом файле. Указывались устройства и их атрибуты (адреса, уровни прерываний и пр.). Номер операционной системы добавлялся к имени файла, например #OC11, #OC77

Номер операционной системы задавался на клавишном регистре и вызывалась микропрограмма загрузчика.

После загрузки можно было использовать монитор, но программисты больше любили задавать остановы по адресам, изменять или читать содержимое памяти через клавишный регистр. Манипуляции человека с регистрами панели управления вычислительного комплекса завораживала и называлась у нас "танцем маленьких лебедей".

Так вот, почему регистры сгруппированы по три? Именно потому что при этом получается не более 6 цифр (5*3+1 = 6). В три разряда можно записать максимум 111=7 и значит мы располагаем цифрами от 0 до 7.

В десятичном исчислении у нас цифры от 0 до 9, в двоичном - от 0 до 1. Следовательно для цифр от 0 до 7 получается восьмеричное исчисление.

 

 

 

Рисунок 3 Клавишные регистры на панели управления УВК 90х годов

 

7+1 в восьмеричном исчислении также равно 10, но уже теперь восьмеричной десятке.

 

1*81 + 0*80 = 8

 

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

В качестве примера:

102077 = 1 000 010 000 111 111

 

Потом прогресс явил миру 32 разрядные машины и восьмеричное исчисление стало неинформативным, а у компьютеров где вы теперь видите клавишные регистры? Тем не менее профессионалы продолжают использовать недесятичное исчисление для более компактной записи содержимого памяти и адресов. Теперь используется шестнадцатиричная система исчисления (8 и 16 - потому что это степени двойки и удобно для перевода в двоичное и наоборот).

Но цифр-то только 10, поэтому придумали использовать алфавит от A до F (a=10, b=11...f=15).

В шестнадцатиричной системе клавишный регистр был бы раскрашен уже не по три, а по четыре бита (24 = 16)

Максимальное положительное значение 32 разрядного регистра равно

FFFF

или 232 -1

А F+1 все равно 10 = 16, как не крути!!!!

Ну и осталось научиться переводить десятичное в двоичное без калькулятора в режим "программист".

 

Для перевода чисел из десятичной системы счисления в двоичную используют так называемый "алгоритм замещения", состоящий из следующей последовательности действий:

1. Делим десятичное число А на 2. Частное Q запоминаем для следующего шага, а остаток a записываем как младший бит двоичного числа.

2. Если частное q не равно 0, принимаем его за новое делимое и повторяем процедуру, описанную в шаге 1. Каждый новый остаток (0 или 1) записывается в разряды двоичного числа в направлении от младшего бита к старшему.

3. Алгоритм продолжается до тех пор, пока в результате выполнения шагов 1 и 2 не получится частное Q = 0 и остаток a = 1.

 

Например найдём двоечный эквивалент для десятичного числа 15:

1510: 2 = 710

1510 - 1410 = 1, остаток 1 записываем в младший (нулевой) разряд двоичного числа.

710: 2 = 310

710 - 610 = 1, остаток 1 записываем в первый разряд двоичного числа.

310: 2 = 110

310 - 210 = 1, остаток 1 записываем второй разряд двоичного числа.

110: 2 = 010, остаток 1 записываем в третий разряд двоичного числа.

Итого 1510 равно 1111 2

Ну вот, вы теперь всё знаете, а Елена уехала на шашлыки и всё пропустила...

 


[1] ПТУ-Профессионально-техническое училище, которым вечно родители пугали нерадивых сыновей-дочерей вплоть до девятого класса. Что -то вроде нынешнего "двузвёздного" колледжа (прим. автора)

 

[2]

Date: 2016-08-29; view: 187; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию