Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Битовые преобразования
 
Дано: символ "a", ему соответствует код DOS= 97
Этот код переводится в двоичный байт заданной размерности
(скажем, n=10): 97<=> 0001100001, затем он преобразуется
              0001100001
              1011101011
              __________
              1010001010
Так получается, что время такого преобразования зависит от размерности байта странным образом, а именно: при увеличении размерности байта(n=11,n=12,n=13 и т.д), время его преобразования остаётся неизменным  ("скачет" в пруделах ошибки):
n=8  t=5.38
n=9  t=4.50
n=10 t=4.61
n=11 t=4.83
n=12 t=4.50
n=13 t=4.67
n=14 t=4.50
n=15 t=4.45
n=16 t=4.56
(По всем алгоритмическим законам, оно должно возрастать экспоненциально)
Прошу указать возможные причины такого выполнения алгоритма(программа работает корректно),если вопрос поставлен некорректно, приношу извинения.
 
Цитата
двоичный байт
а что это такое? Все байты на двоичной машине двоичные, это вопрос интерпретации считать содержимое байта двоичным числом или кодом символа. поэтому следует пояснить что называем "двоичным байтом" и как обычный двоичный 8 разрядный байт конвертим в "двоичный", это не самоочевидно.

Цитата
при увеличении размерности байта(n=11,n=12,n=13 и т.д)
Насколько я помню у байта фиксированая ширина определяемая аппаратными средствами и обычно равная 8.

Цитата
(По всем алгоритмическим законам, оно должно возрастать экспоненциально)
неплохо было опубликовать алгоритм, а также программу чтоб можно понять что делатся  и как, тогда уже можно будет какито выводы делать.
 
Под байтом следует понимать последовательность битов, которая соответствует данному текстовому символу.
Размерность такого "байта" может быть любой- от 8-ми и выше, если она, скажем, =10 , то к обычному коду впереди приписывается нули,"дополняющие" этот байт до 10-битного.(FORTRAN77)(=>DOS-овский .exe-файл)
   mnz.txt-число символов, размерность байта, любое целое число
   fraza.txt- последовательность преобразуемых символов.
(Таким образом:
'W'
'i'
'n'
't'
'e'
'r'

program code
dimension b(64),c(64,500),rnd(500)
character a0(500),b0(256)
c __________________________________________ vvod dannih

open(1,file='codfrazi.txt',status='new')
open(2,file='codpos.txt',status='new')
open(11,file='mnz.txt')                      
read(11,*)m,n
open(10,file='fraza.txt')                -Ввод текстовой последовательности                
do 1 j=1,m                               -*
read(10,*)a0(j)                          -*
1 continue                                 -*
do 2 i=0,255
b0(i)=i
2 continue

c ___________________________________________ perevod frazi v kod

l=1                                       Перевод текстовой последовательности в двоич-
do 4 j=1,m                                     ный код
do 3 i=0,255                                    
if(a0(j).eq.b0(i)) then
go to 10
endif
go to 11
10 continue
k=j
a=i
call pdk(a,n,m,l)
11 continue
3 continue
4 continue




end
c _______________________________________preobrazovanie v dvoichniy cod
                                               Преобразование конкретного числа в 2-вид (подпрограмма)
subroutine pdk(a,n,m,l)
dimension b(64)
integer c
p=a*.5
q=int(p)
i=1
1 continue
if(i.gt.n) then
go to 2
endif
if(p.eq.q) then
b(i)=0
else
b(i)=1
endif
a=q
i=i+1
p=a*.5
q=int(p)
go to 1
2 continue
do 3 i=n,1,-1
c=b(i)
write(l,*)c
3 continue
end
 
Данила88 Дак а в чем проблема то? вы хотите чтобы ваша программа дольше работала при увеличении разрядности вашего двоичного слова?
 
Нет, это- часть пакета программ, требуется определить, можно ли пренебречь
временем выполнения этого блока по сравнению со временем выполнения других блоков, а установить зависимость времени от размерности байта не представляется возможным для больших значений размерности. К тому же, если единственное логичное решение этого вопроса (если время выполнения операций T мало по сравнению со временем подсоединения внешнего файла, то T того же порядка, что и ошибка измерения), то, "покопавшись", можно нарваться (может быть) на метод ускорения выполнения определённых алгоритмов.
 
-------
Изменено: qwe113 - 06.12.2011 08:35:02
 
n=16, больше комп не тянет.
 
------
Изменено: qwe113 - 06.12.2011 08:33:12
 
Алгоритм линейный: измерения времени делались для одной и той же текстовой последовательности,для разных значений n, с изменением размерности бита длина преобразуемой последовательности меняется, следовательно, время операций тоже должно меняться.
Пример
            S     Q     L                     S      Q         L        
DOS-код     83    81    76                     83     81       76      
n            8                                 9                    
RND        101    44    65                     72     321       478        
DOS   01010011 0101100 01001100           001010011 000101100 001001100
RND   01100101 0101100 01000001           001001000 101000001 111011110
рез-т 00110110 0000000 00001101           000011011 101101101 110010010
         t=T1                                    t=T2
                           T1.ne.T2
Ступеней преобразований может быть много, размерность бита для каждого сеанса постоянна, m-ое количество ступеней преобразования нельзя заменить одной, т.к. интересует результат каждой ступени преобразований.

P.S Спасибо за уделённое время.
 
-----
Изменено: qwe113 - 06.12.2011 08:32:38
 
Большое спасибо.
Страницы: 1
Читают тему