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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2013, 03:11   #1
Анна кот
Новичок
Джуниор
 
Регистрация: 26.11.2013
Сообщений: 1
По умолчанию перевести число в десятичную систему

помогите пожалуйста решить задачку:
1) перевести число в десятичную систему: 2048?
2) перевести в двоичную систему число:10110011?
Анна кот вне форума Ответить с цитированием
Старый 26.11.2013, 03:14   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
перевести число в десятичную систему: 2048
не получится
это число уже в десятеричной системе

Цитата:
перевести в двоичную систему число:10110011?
аналогично
это число уже записано в двоичной системе


PS: и ещё, чтобы перевести из системы в систему,
надо знать, в какой системе изначально записано число.
Например, 2048 может быть записано как в десятеричной, так и шестнадцатеричной системе.
EducatedFool вне форума Ответить с цитированием
Старый 26.11.2013, 08:23   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Например, 2048 может быть записано как в десятеричной, так и шестнадцатеричной системе.
Это из общепринятых. По сути, оно может быть записано в любой СС с основой больше 8.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 26.11.2013, 11:13   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вот функции для перевода десятичных чисел в любую систему до 36-иричной и обратно:
Код:
' из 10-ричной системы в какую-то n-ричную
Function D2xz(d As Long, xz As Long) As String
  Dim r As Integer, s As String
  r = Int(Log(d + 0.001) / Log(xz))  'Для 64, 128 перевод в 2-ичную систему дало неожиданный результат: Log(128)/Log(2) = 7 - это
  'правильно, а Int(Log(128)/Log(2)) уже равно 6 и в старшем разряде получается "2"!!!, пришлось добавить нелогичный 0.001
  Do
    s = s & D2C(Int(d / xz ^ r))
    d = d - Int(d / xz ^ r) * xz ^ r
    r = r - 1
  Loop Until r = -1
  D2xz = s
End Function
' и обратно
Function xz2D(s As String, xz As Long) As Long
  Dim r As Integer, d As Long
  For r = 0 To Len(s) - 1
    d = d + C2D(Mid(s, Len(s) - r, 1)) * xz ^ r
  Next
  xz2D = d
End Function
Function D2C(i As Integer) As String
  D2C = Split("0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z", ",")(i)
End Function
Function C2D(c As String) As Long
  C2D = InStr("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", c) - 1
End Function
две последние служебные, а Вы можете пользоваться функциями D2xz и xz2D. первый параметр значение, которое необходимо конвертировать, второй - в какую (из какой) систему исчисления

2048(10) == 800(16)
2048(16) == 8264(10)
10110011(10) == 100110100100010000111011(2)

где в обозначении ХХХХ(уу)
ХХХХ - значение
уу - размерность (система исчисления)

стандартная ДЕС.В.ДВ переводит из десятичной в двоичную числа величиной меньше 512
функция приведенная выше перевела в двоичную систему число 10110011 (десять миллионов стодесять тысяч одинадцать).
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 26.11.2013 в 11:31.
IgorGO вне форума Ответить с цитированием
Старый 26.11.2013, 13:05   #5
Czeslaw
Пользователь
 
Регистрация: 08.07.2013
Сообщений: 95
По умолчанию

Можно и так.
Вложения
Тип файла: rar перевод 10_2 и 2_10.rar (9.0 Кб, 12 просмотров)
Czeslaw вне форума Ответить с цитированием
Старый 26.11.2013, 21:18   #6
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от Анна кот Посмотреть сообщение
...перевести в двоичную систему число:10110011
А почему никто не рассматривает варианты с
Код:
=ДВ.В.ДЕС(10110011)
?
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 27.11.2013, 01:08   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Сережа,
присмотрись к заданию число
10110011 (десять миллионов стодесять тысяч одинадцать) - это десятичное, а его необходимо перевести в двоичную систему.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.11.2013, 21:17   #8
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Игорь, а 2048 - это по-твоему двоичное?
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 27.11.2013, 23:05   #9
Czeslaw
Пользователь
 
Регистрация: 08.07.2013
Сообщений: 95
По умолчанию

Сергей, а как перевести в двоичную систему число 2048.
Czeslaw вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести число из пятеричной системы в десятичную EleF Паскаль, Turbo Pascal, PascalABC.NET 6 15.06.2012 09:57
Перевести число в римскую систему счисления alexandr017 Общие вопросы C/C++ 1 18.12.2011 18:38
Как перевести число из 256 системы счисления в десятичную ? alexprey Помощь студентам 5 24.11.2010 16:48
"Число в p-ичной системе счисления. Перевести число в q-ичную систему" и не только :) Zinder Паскаль, Turbo Pascal, PascalABC.NET 4 10.04.2010 14:20