|   |   | 
| 
 | Как преобразовать десятичное число в двоичное в 1С ? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Ткачев 20.07.11✎ 11:23 | 
        Например как из 32 получить 00100000 ?     | |||
| 1
    
        lxs 20.07.11✎ 11:24 | 
        позор     | |||
| 2
    
        Jstunner 20.07.11✎ 11:25 | 
        (1) +1     | |||
| 3
    
        lxs 20.07.11✎ 11:25 | 
        8 класс, основы информатики     | |||
| 5
    
        andrewks 20.07.11✎ 11:25 | 
        (0) зачем?     | |||
| 6
    
        Восточный Парень 20.07.11✎ 11:26 | 
        (1) а еще человек программистом работает     | |||
| 7
    
        Ткачев 20.07.11✎ 11:26 | 
        (3)У нас не было еще информатики     | |||
| 8
    
        Варвар 20.07.11✎ 11:26 | 
        в 1С это не возможно.     | |||
| 9
    
        lxs 20.07.11✎ 11:26 | 
        (8) +100500))))     | |||
| 10
    
        lxs 20.07.11✎ 11:26 | 
        +(9) она не справится с такой нагрузкой     | |||
| 11
    
        lxs 20.07.11✎ 11:27 | ||||
| 12
    
        guitar_player 20.07.11✎ 11:27 | 
        (0)вы спрашиваете есть ли функция которая это делает или какой использовать алгоритм?     | |||
| 13
    
        Ткачев 20.07.11✎ 11:30 | 
        (12)Да, я знаю что такое двоичная система.     | |||
| 14
    
        patapum 20.07.11✎ 11:31 | 
        (13) близица пятницо     | |||
| 15
    
        lxs 20.07.11✎ 11:31 | 
        (13) внимательнее читай.     | |||
| 16
    
        PR 20.07.11✎ 11:33 | 
        (12) + (13) Мрак :)))     | |||
| 17
    
        modestry 20.07.11✎ 11:34 | ||||
| 18
    
        H A D G E H O G s 20.07.11✎ 11:36 | 
        Функция ПреобразоватьДесятичноеВДвоичноеДробное(Значение)
  ЗаданнаяТочность=0.01; ЦелаяЧасть=Цел(Значение); ДробнаяЧасть=Значение-ЦелаяЧасть; Частное=ЦелаяЧасть; СтруктураВозврата=Новый Структура; Результат=Новый Массив; Пока Частное>0 Цикл Остаток=Частное%2; Частное=(Частное-Остаток)/2; Результат.Вставить(0,Остаток); КонецЦикла; СтруктураВозврата.Вставить("ЦелаяЧасть",Результат); Результат=Новый Массив; Пока ДробнаяЧасть>ЗаданнаяТочность Цикл ДробнаяЧасть=ДробнаяЧасть*2; ЦелаяЧасть=Цел(ДробнаяЧасть); ДробнаяЧасть=ДробнаяЧасть-ЦелаяЧасть; Результат.Добавить(ЦелаяЧасть); КонецЦикла; СтруктураВозврата.Вставить("ДробнаяЧасть",Результат); Возврат СтруктураВозврата; КонецФункции | |||
| 19
    
        kot_bcc 20.07.11✎ 11:36 | 
        (17) Там лишний инвертор, полагаю
  
  | |||
| 20
    
        lxs 20.07.11✎ 11:41 | 
        ИсхЧисло = 255;
  ДвоичныйКод = ""; Пока 1=1 Цикл Если ИсхЧисло/2 < 1 Тогда ДвоичныйКод = "1" + ДвоичныйКод; Прервать; КонецЕсли; ДвоичныйКод = ?(Окр(ИсхЧисло/2)=ИсхЧисло/2, "0", "1") + ДвоичныйКод; ИсхЧисло = Цел(ИсхЧисло/2); КонецЦикла; Сообщить(ДвоичныйКод); | |||
| 21
    
        Ткачев 20.07.11✎ 11:47 | 
        т.е. форматом, или чем либо другим кроме цикла не получится, спасибо.     | |||
| 22
    
        sergeante 20.07.11✎ 11:49 | 
        (21) типа оправдался))     | |||
| 23
    
        Aprobator 20.07.11✎ 11:53 | 
        о я тоже хочу )
  
  | |||
| 24
    
        lxs 20.07.11✎ 11:56 | 
        (23) о, епт, я про использование % забыл как-то, точняк!!     | |||
| 25
    
        Aprobator 20.07.11✎ 11:56 | 
        +(23) эх, если исходное 0 не учел.     | |||
| 26
    
        lxs 20.07.11✎ 11:57 | 
        Только у тебя косяк, надо слева добавлять     | |||
| 27
    
        Ткачев 20.07.11✎ 11:57 | 
        (22)Я когда то работал с ассемблером и для меня системы счисления не новость, просто я подумал что можно как то без циклов обойтись.     | |||
| 28
    
        Aprobator 20.07.11✎ 12:00 | 
        (26) ась? Именно справа. Чтобы потом справа налево не читать.
  Только вначале всего этого добавить контрольку на 0 и все. (27) забей - это миста. Обычай здесь такой. | |||
| 29
    
        lxs 20.07.11✎ 12:03 | 
        ИсхЧисло = 32;
  ДвоичныйКод = ""; Пока ИсхЧисло>1 Цикл ДвоичныйКод = Строка(ИсхЧисло%2) + ДвоичныйКод; ИсхЧисло = Цел(ИсхЧисло/2); КонецЦикла; ДвоичныйКод = "1" + ДвоичныйКод; Сообщить(ДвоичныйКод); | |||
| 30
    
        skunk 20.07.11✎ 12:03 | 
        (27)скажи какая команда ассемблера преобразует данные в двоичный, восмеричный и т.д. ... формат     | |||
| 31
    
        lxs 20.07.11✎ 12:03 | 
        а, ну и да, для нуля не учел))     | |||
| 32
    
        Ткачев 20.07.11✎ 12:05 | 
        (30)Где ты видел в ассемблере такие команды ?
  B дв. D дес. H шест. | |||
| 33
    
        kot_bcc 20.07.11✎ 12:07 | 
        (30) bcd, aaX etc     | |||
| 34
    
        smaharbA 20.07.11✎ 12:09 | 
  | |||
| 35
    
        smaharbA 20.07.11✎ 12:09 | 
        (33) правдо ?     | |||
| 36
    
        Aprobator 20.07.11✎ 12:10 | 
        (28) а не - туплю наверное с право и лево то)     | |||
| 37
    
        kot_bcc 20.07.11✎ 12:16 | 
        (35) Я гарантирую это. Инфа 100%.     | |||
| 38
    
        skunk 20.07.11✎ 12:16 | 
        (32)читая твой (27)можно сделать такой вывод ... ведь как-то ты там без циклов обходился     | |||
| 39
    
        Ткачев 20.07.11✎ 12:19 | 
        Давай те теперь я скажу для чего мне это нужно, может что попроще придумаем, есть 10 строк таблицы и надо сосчитать сумму у этих строк, т.е. Таб.Получить(N) как бы возвращает число.
  Сумма1 = Таб.Получить(1); Сумма2 = Таб.Получить(2); Сумма3 = Таб.Получить(2) + Таб.Получить(1); Сумма4 = Таб.Получить(3); Сумма5 = Таб.Получить(3) + Таб.Получить(1); Сумма6 = Таб.Получить(3) + Таб.Получить(2); Сумма7 = Таб.Получить(3) + Таб.Получить(2) + Таб.Получить(1); и т.д. | |||
| 40
    
        Ткачев 20.07.11✎ 12:21 | 
        (38)Mov A,1001B
  Mov A,09H Mov A,9 | |||
| 41
    
        kot_bcc 20.07.11✎ 12:23 | 
        (39) Держите меня семеро...
  "Таб.Итог" не рассматривался? | |||
| 42
    
        Aprobator 20.07.11✎ 12:23 | 
        (39) ппц. Что за 10 строк? Как расположены в таблице?     | |||
| 43
    
        Aprobator 20.07.11✎ 12:24 | 
        (41) не - ты чо без другой системы счисления здесь никак не обойтись!     | |||
| 44
    
        ReaLg гуру 20.07.11✎ 12:24 | 
        (8) Убило :) Надо запомнить этот универсальный ответ на все хотелки, когда лень что - либо делать :)     | |||
| 45
    
        sergeante 20.07.11✎ 12:24 | 
        (39) интересно. А что за задача то такая?     | |||
| 46
    
        Ткачев 20.07.11✎ 12:25 | 
        Допустим так:
  Таб(1) = 10; Таб(2) = 20; Таб(3) = 30; Таб(4) = 40; Таб(5) = 50; Таб(6) = 60; Таб(7) = 70; ... | |||
| 47
    
        Ткачев 20.07.11✎ 12:25 | 
        (45)v8: Нужна программа для автоподбора файлов.
  Ну не получается у меня с этим "рюкзаком" | |||
| 48
    
        lxs 20.07.11✎ 12:26 | 
        (39) плять..матрица...     | |||
| 49
    
        Ткачев 20.07.11✎ 12:26 | 
        Добавляю в таблицу колонку метку и ставлю либо 0, либо 1 и где 1 считаю.     | |||
| 50
    
        Aprobator 20.07.11✎ 12:28 | 
        е мое. То есть нужна чисто сумма по отмеченным строкам? И из за этого родилась данная тема? Я фигею без рояля.     | |||
| 51
    
        Ткачев 20.07.11✎ 12:30 | 
        (50)Нее, ну тема нормально, если такое надо будет можно от сюда скопипастить.     | |||
| 52
    
        sergeante 20.07.11✎ 12:32 | 
        (50) да нормальная тема.     | |||
| 53
    
        smaharbA 20.07.11✎ 12:32 | 
        (40) а теперь как получить десятичноый результат ?     | |||
| 54
    
        Дикообразко 20.07.11✎ 12:33 | 
        пятницо здесь?     | |||
| 55
    
        Aprobator 20.07.11✎ 12:34 | 
        ну дык.     | |||
| 56
    
        Ткачев 20.07.11✎ 12:36 | 
        Как сумму то размеров файлов перебрать ?     | |||
| 57
    
        smaharbA 20.07.11✎ 12:40 | 
        перебором     | |||
| 58
    
        Aprobator 20.07.11✎ 12:40 | 
        отсортировал и вперед.     | |||
| 59
    
        Aprobator 20.07.11✎ 12:41 | 
        с алгоритмами вообще фигово?     | |||
| 60
    
        Ткачев 20.07.11✎ 12:44 | 
        (57)Как перебором ? Все равно пропускаются некоторые строки.     | |||
| 61
    
        Рэйв 20.07.11✎ 12:47 | 
        (60)Если я правильно телепатирую что тебе надо то где то так:
  
  | |||
| 62
    
        Ткачев 20.07.11✎ 12:49 | 
        (61)Ща попробую     | |||
| 63
    
        Рэйв 20.07.11✎ 12:49 | 
        + правда так он тебе один запихает только, когда до 1000 дойдет:-)
  но тут важет принцип | |||
| 64
    
        Рэйв 20.07.11✎ 12:49 | 
        *важен     | |||
| 65
    
        Ткачев 20.07.11✎ 12:52 | 
        Нее, мне надо все возможное из файлов.     | |||
| 66
    
        Ткачев 20.07.11✎ 12:52 | 
        А тут только один     | |||
| 67
    
        smaharbA 20.07.11✎ 12:52 | 
        перебором еще     | |||
| 68
    
        Рэйв 20.07.11✎ 12:53 | 
        Госпади:-)  на разных размерах не с шагом 1 будет несколько файлов, не понятног разве?
  в(61) просто пример | |||
| 69
    
        Ткачев 20.07.11✎ 12:53 | 
        (67)Как в (39) не получается     | |||
| 70
    
        Ткачев 20.07.11✎ 14:12 | 
        А что все замолчали ?
  Столько кода вверху написали, а как до дела дошло все сразу молчат. | |||
| 71
    
        Ткачев 20.07.11✎ 14:13 | 
        Осталось причесать:
  Функция ПреобразованиеЧисла(Знач ИсхЧисло) ДвоичныйКод = ""; Пока ИсхЧисло <> 0 Цикл ДвоичныйКод = "" + ИсхЧисло%2 + ДвоичныйКод ; ИсхЧисло = Цел(ИсхЧисло/2); КонецЦикла; Возврат ДвоичныйКод; КонецФункции Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) ОчиститьСообщения(); Длина = 600; МинимальнаяДлина = 400; ТаблицаФайлов = Новый ТаблицаЗначений; ТаблицаФайлов.Колонки.Добавить("Имя"); ТаблицаФайлов.Колонки.Добавить("Размер"); НовСтр = ТаблицаФайлов.Добавить(); НовСтр.Имя = "Первый"; НовСтр.Размер = 100; НовСтр = ТаблицаФайлов.Добавить(); НовСтр.Имя = "Второй"; НовСтр.Размер = 200; НовСтр = ТаблицаФайлов.Добавить(); НовСтр.Имя = "Третий"; НовСтр.Размер = 300; НовСтр = ТаблицаФайлов.Добавить(); НовСтр.Имя = "Четвертый"; НовСтр.Размер = 400; НовСтр = ТаблицаФайлов.Добавить(); НовСтр.Имя = "Пятый"; НовСтр.Размер = 500; НовСтр = ТаблицаФайлов.Добавить(); НовСтр.Имя = "Шестой"; НовСтр.Размер = 600; ВремТаблица = Новый ТаблицаЗначений; ВремТаблица.Колонки.Добавить("Имя"); ВремТаблица.Колонки.Добавить("Размер"); ТаблицаРезультата = Новый ТаблицаЗначений; ТаблицаРезультата.Колонки.Добавить("Имя"); ТаблицаРезультата.Колонки.Добавить("Размер"); Кон = 1; Для Аа = 1 по ТаблицаФайлов.Количество() Цикл Кон = Кон * 2; КонецЦикла; Для Аа = 1 По Кон - 1 Цикл Результат = 0; Стр = ПреобразованиеЧисла(Аа); СтрДл = СтрДлина(Стр); Для Аб = 0 по СтрДл - 1 Цикл Если Сред(Стр, СтрДл - Аб, 1) = "1" Тогда СтрТаб = ТаблицаФайлов.Получить(Аб); НовСтр = ВремТаблица.Добавить(); НовСтр.Имя = СтрТаб.Имя; НовСтр.Размер = СтрТаб.Размер; Результат = Результат + СтрТаб.Размер; КонецЕсли; КонецЦикла; Если Результат <= Длина И Результат >= МинимальнаяДлина Тогда Для Каждого Стр Из ВремТаблица Цикл НовСтр = ТаблицаРезультата.Добавить(); НовСтр.Имя = Стр.Имя; НовСтр.Размер = Стр.Размер; КонецЦикла; НовСтр = ТаблицаРезультата.Добавить(); НовСтр.Имя = "-" + Результат + "-"; КонецЕсли; ВремТаблица.Очистить(); КонецЦикла; Для Каждого Стр Из ТаблицаРезультата Цикл Сообщить(Стр.Имя + " " + Стр.Размер); КонецЦикла; Отказ = 1; КонецПроцедуры | |||
| 72
    
        Aprobator 20.07.11✎ 14:45 | 
        не - седни точно пятница. Ваш код ПреобразованиеЧисла 8 ку преобразует в 000.     | |||
| 73
    
        Aprobator 20.07.11✎ 14:45 | 
        или это замануха такая, чтобы кто-нибудь готовое решение полностью выложил?     | |||
| 74
    
        Ткачев 20.07.11✎ 14:49 | 
        (73) У меня нормально, 8 = 1000     | |||
| 75
    
        Aprobator 20.07.11✎ 14:50 | 
        (74) откуда там 1 берется?     | |||
| 76
    
        Aprobator 20.07.11✎ 14:50 | 
        если там добавляется только остаток?     | |||
| 77
    
        Aprobator 20.07.11✎ 14:51 | 
        а сек - ща одну вещь проверю.     | |||
| 78
    
        Ткачев 20.07.11✎ 14:51 | 
        (75)Хз, это вовсе не мой код, я его сверху взял.(29)     | |||
| 79
    
        Aprobator 20.07.11✎ 14:52 | 
        а не - все норм, это я туплю.     | |||
| 80
    
        Ткачев 20.07.11✎ 14:54 | 
        (79)Не подскажете как сократить ?
  Кон = 1; Для Аа = 1 по ТаблицаФайлов.Количество() Цикл Кон = Кон * 2; КонецЦикла; Для Аа = 1 По Кон - 1 Цикл | |||
| 81
    
        Aleksey 20.07.11✎ 14:55 | 
        Функция Из_10_В_Любую(Знач Значение=0,Нотация=36) Экспорт
  Если Нотация<=0 Тогда Возврат("") КонецЕсли; Значение=Число(Значение); Если Значение<=0 Тогда Возврат("0") КонецЕсли; Значение=Цел(Значение); Результат=""; Пока Значение>0 Цикл Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%Нотация+1,1)+Результат; Значение=Цел(Значение/Нотация) ; КонецЦикла; Возврат Результат; КонецФункции | |||
| 82
    
        Aprobator 20.07.11✎ 14:56 | 
        (78) ага - код прям копия (29).
  (80) 
  | |||
| 83
    
        Aprobator 20.07.11✎ 14:59 | 
        (81) оригинально однако.     | |||
| 84
    
        Ткачев 20.07.11✎ 15:01 | 
        (82)Сп. за (80)     | |||
| 85
    
        Ёпрст гуру 20.07.11✎ 15:01 | 
        (83) баян с синьёры однако     | |||
| 86
    
        Aleksey 20.07.11✎ 15:02 | 
        (83) и обратно
  Функция Из_Любой_В_10(Знач Значение="0",Нотация=36) Экспорт Если Нотация<=0 Тогда Возврат(0) КонецЕсли; Значение=СокрЛП(Значение); Если Значение="0" Тогда Возврат(0) КонецЕсли; Результат=0; Длина=СтрДлина(Значение); Для Х=1 По Длина Цикл М=1; Для У=1 По Длина-Х Цикл М=М*Нотация КонецЦикла; Результат=Результат+(Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Сред(Значение,Х,1))-1)*М; КонецЦикла; Возврат Окр(Результат); КонецФункции | |||
| 87
    
        Ёпрст гуру 20.07.11✎ 15:03 | ||||
| 88
    
        Ёпрст гуру 20.07.11✎ 15:03 | 
        +87 причем, Рупора..     | |||
| 89
    
        Aprobator 20.07.11✎ 15:04 | 
        (85)я не так часто в 1С ине занимаюсь преобразованием в различные системы счисления )     | |||
| 90
    
        Aprobator 20.07.11✎ 15:05 | 
        а вообще да - было, причем еще в 7 - ке. За мою практику таких задач не возникало ни разу.     | |||
| 91
    
        Ткачев 20.07.11✎ 15:06 | 
        Я избавился от цикла с преобразованием см. (47)     | |||
| 92
    
        kible 20.07.11✎ 15:35 | 
        Для чего нужна формула n^n-1     | |||
| 93
    
        Ткачев 20.07.11✎ 15:36 | 
        (92)Количество вариантов, для суммы.     | |||
| 94
    
        Ткачев 20.07.11✎ 15:39 | 
        У меня очень много инсталяшек игр на компе, вот решил их по дискам раскидать, руками не очень то удобно файлы выбирать для диска, вот и решил найти прогу (47), т.к. ни чего не нашел, решил ее в 1с-ке сделать.     | |||
| 95
    
        kible 20.07.11✎ 15:51 | 
        (93) для суммы чего?     | |||
| 96
    
        Ткачев 20.07.11✎ 15:55 | 
        (39)СуммаНОМЕРВАРИАНТА = ...     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |