|
Как преобразовать десятичное число в двоичное в 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)СуммаНОМЕРВАРИАНТА = ...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |