Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.01.2009, 08:50   #1
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
По умолчанию Шестнадцатиричные числа

Пожалуйста помогите мне Разобраться с переводом шестнадцатиричного числа в десятиричное . Разобрать хотя бы 1000(десятиричное число) . А то не могу понять принцип перевода .
vasek123 вне форума
Старый 01.01.2009, 11:41   #2
Himber
Новичок
Джуниор
 
Аватар для Himber
 
Регистрация: 01.01.2009
Сообщений: 2
По умолчанию

Сначала посоветую разобраться с принципом шестнадцатиричного счета, затем станет понятен принцип перевода
Считаешь грязью - пользуйтеся мылом: 1 способ - пиши, 2 еще нужна верёвка
Himber вне форума
Старый 01.01.2009, 22:29   #3
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
По умолчанию

Цитата:
Сообщение от Himber Посмотреть сообщение
Сначала посоветую разобраться с принципом шестнадцатиричного счета, затем станет понятен принцип перевода
Что ты считаешь принципом ? Если то как обозначается шестнадцатиричное число то это мне и так ясно ! Дело в том что в шестнадцатиричном числе используются помимо цифр еще и буквы , например я пробовал разобрать , скажем , такой пример : 1000 в шестнадцатиричном формате выглядит так 3Е8 , если пробовать разобрать этот пример то получается 4000 с копейками но не как не тысяча !

Последний раз редактировалось vasek123; 01.01.2009 в 22:36.
vasek123 вне форума
Старый 02.01.2009, 01:59   #4
mello
Пользователь
 
Регистрация: 02.01.2009
Сообщений: 12
По умолчанию

уберите подпись, уже пол форума валяется

пc 3 * 16 ^ 2 + E * 16 ^ 1 + 8 * 16 ^ 0
define1232(а)mail.ru
mello вне форума
Старый 02.01.2009, 07:27   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

mello, +1

я немножко разжую. для "хакера"... ;-)

Цитата:
Сообщение от vasek123
Дело в том что в шестнадцатиричном числе используются помимо цифр еще и буквы
точно. в любой системе счисления с основанием больше десяти (двенадцатиричной, шестнадцатиричной, двадцатиричной и т.д...) вынужденно используются латинские буквы, т.к. банально не хватает десятичных циферок... буква A обозначает 10, B — 11, C — 12 и т.д.
Поэтому Ваш пример: 0x3E8 (справа налево, в порядке возрастания степени основания):
8*1 (16 (основание системы счисления) в степени 0)
14*16 (16 в степени 1)
3*256 (16 в степени 2)
получаем: 768 + 224 + 8

p.s. читайте книжки... пригодится...
Serge_Bliznykov вне форума
Старый 02.01.2009, 10:55   #6
Ananim-Pbl6ak
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 77
По умолчанию

Код:
Program Bin_Dec;
{Печать целых положительных чисел в десятичной}
{и двоичной системах счисления }
Var
	LeftBorder,RightBorder,Delimoe,Number,J:Byte;
Begin
	Writeln('Задайте границы диапазона от 0 до 255');
	Write('=>  ');
	Readln(LeftBorder,RightBorder);
	Writeln('Числа из диапазона [',LeftBorder,',',RightBorder,']');
	Writeln('двоичные  десятичные');
	Writeln;
	For Number:=LeftBorder to RightBorder do
		Begin
			Delimoe:=Number;
			Write(Number:16);
			For J:=0 to 7 do
				Begin
					Write(#13,Delimoe mod 2:8-J); 
					Delimoe:=Delimoe div 2;
				End;
			Writeln;
		End;
End.

Последний раз редактировалось Stilet; 06.05.2009 в 09:28.
Ananim-Pbl6ak вне форума
Старый 02.01.2009, 20:14   #7
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Допустим нам нужно перевести число 567 десятеричной
системы в двоичную систему. Делается это следующим об-
разом: отыскивается максимальная степень двойки, чтобы
два в этой степени было меньше или равно исходному
числу. В нашем случае это 9, т.к. 2^9=512, а 2^10=1024
что больше нашего начального числа. Таким образом мы
получили число разрядов результата. Оно равно 9+1=10.
Значит результат будет иметь вид 1ххххххххх, где вместо
х может стоять 1 или 0. Найдем вторую цифру результата.
Возведем двойку в степень 9 и вычтем из исходного
числа: 567-2^9=55. Затем сравниваем с числом 2^8=256.
Так как 55 меньше 256 то девятый разряд будет нулем,
т.е. результат уже примет вид 10хххххххх. Рассмотрим
восьмой разряд: 2^7=128 > 55, значит и восьмой разряд
будет нулем. Т.к. 2^6=64 то седьмой разряд равен нулю.
Таким образом мы получили четыре старших разряда и
число примет вид 1000хххххх. Вычисляем 2^5=32 и видим,
что 32 < 55, значит шестой разряд равен 1 (результат
10001ххххх), остаток 55-32=23. 2^4=16 < 23 - пятый раз-
ряд 1 => 100011хххх. Остаток 23-16=7. 2^3=8 > 7 =>
1000110ххх. 2^2=4 < 7 => 10001101хх, остаток 3. 2^1=2 <
3 => 100011011х, остаток 1. 2^0=1 = 1 => 1000110111. Мы
получили конечный результат.
Теперь попробуем перевести тоже число 567, но уже в
шестнадцатиричную систему. Подход примерно такой же.
Определим максимальный разряд. Т.к. 16^2=256 < 567, а
16^3=4096 > 567, то максимальный разряд 2+1=3. Опреде-
лим число, которое будет стоять в третьем разряде.
Ищется максимальный множитель в пределах от 1 до 15,
чтобы текущая степень шестнадцати умноженная на этот
множитель была меньше или равнялась исходному числу (а
в дальнейшем - остатку). В нашем примере этот множитель
2, т.к. 256*2=512 < 567, а 256*3=768 > 567. Значит
старший разряд нашего результата будет равен 22 0, и ре-
зультат примет вид 2хх, где вместо х могут стоять любые
цифры или буквы из ниже перечисленных:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Вычисляем остаток:
567-2*16^2=55. Определим что будет стоять во втором
разряде. Так как 3*16^1=48 < 55, а 4*16^1=64 > 55, то
во втором разряде будет стоять цифра 23 0. Оста-
ток=55-3*16^1=7. Определяем первый разряд: т.к. 16^0=1
то цифра первого разряда равна остатку, т.е. 27 0. Таким
образом мы получили число 2237 0, но уже в шестнадцатирич-
ной системе исчисления.
Операция перевода из десятеричной системы выглядит
гораздо проще. Рассмотрим ее на примере перевода из
шестнадцатиричной системы в десятеричную.
Допустим нам нужно перевести число 24A3F 0в десятерич-
ную систему. Берем старший (4 ый) разряд и возводим 16
в степень 4-1=3, получаем 16^3=4096. Полученный резуль-
тат умножаем на значение четвертого разряда, т.е. 4.
Получается 4096*4=16384. Этот результат мы заносим в
сумму. Переходим к следующему разряду: 16^2=256. 256
нужно умножить на значение третьего разряда т.е. A. Как
известно в шестнадцатиричной системе исчисления буквы
от A до F символизируют числа от 10 до 15 ( A=10, B=11,
C=12, D=13, E=14, F=15). Умножив 256 на 10 получим 2560
и этот результат добавляем к сумме, в которой у нас по-
ка было 16384. В сумму у нас получилось 18944. Перехо-
дим ко второму разряду: 3*16^1=48, добавив это в сумму
получим 18992. И последний разряд: 15*16^0=15. Конечная
сумма равна 219007 0. Мы получили результат в десятеричной
системе исчисления.
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума
Старый 08.01.2009, 00:58   #8
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Плохо для надсмехающихся надо мной

Цитата:
Сообщение от mello Посмотреть сообщение
уберите подпись, уже пол форума валяется

пc 3 * 16 ^ 2 + E * 16 ^ 1 + 8 * 16 ^ 0
Тем кто надо мной надсмехается я прежде всего рекомендую решить две задачки и ответить на один вопрос (прежде чем надо мной надсмехаться):

1. простенькая задачка на языке С++ с преднамеренно допущенными ошибками-
Код:
#include <math.h>
  
  int main()
     {
        int nameis;
        cout >> "Привет как тебя зовут";
        cin << nameis;
        cout >> "Привет" nameis;
        return 0;
     }
2. простенький пример на Assambler-
Код:
CSEG segment
      org 110h

      begin:

        mov ah,10
        mov dx,offset Message
        int 22h

        int 23h

        Message db 'Hello programmist '
    end begin
3. Расскажите кратко о протоколах IP и TCP

Думаю вам этого будет достаточно (хотя мог бы и озадачить вопросом по практике применения снипера или чем нибудь еще !).

Последний раз редактировалось Stilet; 06.05.2009 в 09:28.
vasek123 вне форума
Старый 08.01.2009, 01:45   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в чём заключаются собственно задачи 1 и 2 не понял...
видимо, это доступно только "хакерам"...
а мне — нет..

vasek123, Вы бы для начала выучили, как пишется слово Assembler....

Цитата:
3. Расскажите кратко о протоколах IP и TCP
угу... уже... причём всем... правда, люди в автобусе при этом как то странно на меня смотрели...
так и должно было быть?! :D
___________________________________ __________________
vasek123, поймите, станете Вы хакером или нет - зависит только от Вас.... и все тут присутствующим на форуме, по большому счёту, это не так уж и важно...
Лишь бы Вы хорошо учились!
Удачи!
Serge_Bliznykov вне форума
Старый 08.01.2009, 02:17   #10
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

...и слово «...теричный» (там е!)
Sasha_Smirnov вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны натуральные числа n,p, целые числа a1 , ... ,an. Наталья111 Фриланс 10 09.11.2010 20:09
Числа Мерссена Иллидан Свободное общение 3 17.04.2009 13:59
Даны натуральные числа m,n. Посчитать сумму m последнего числа n. лялька Паскаль, Turbo Pascal, PascalABC.NET 6 25.12.2008 15:22
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49
длинные числа molodzo Общие вопросы C/C++ 4 21.02.2008 12:46