ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

22.06.2009, 20:33
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
Сообщение от slesh
2 desTiny Это правильный, но некрасивый способо. Есть более красивый и удобный)
разумеется, он убогий) как и вся идея сожрать 4 байта
Кстати, мой VS сказал про него "8 байт". и про такое тоже:
Код:
struct _REC
{
unsigned short a,b,z;
bool c:1,d:1,e:1,f:1,g:1;
} REC;
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

22.06.2009, 21:19
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Вижу что мало кто юзает данный способ по этому напишу правильный ответ сам )
Это директивы компилятора, которые на время могут менять выравнение структур.
Подефолту выравнение идет на 4 байта. т.е. если структура будет 9 байт, то выравнеется на 12.
#pragma pack(1) - выравнение 1 байт
#pragma pack() - дефолтовое выранение. вот и выходит код типа
#pragma pack(1)
struct .....
#pragma pack()
Последний раз редактировалось slesh; 22.06.2009 в 21:22..
|
|
|

22.06.2009, 21:22
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Кстати, одним из решений другого задания (5) тоже были директивы и никто не написал 
Забыли их, бедняжек (
Added: перечитал пару статей: действительно, скорость при использовании прагм компилятора падает. Иногда значительно.
Последний раз редактировалось Fata1ex; 23.06.2009 в 09:05..
|
|
|

22.06.2009, 21:26
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
А вешь очень удобная для оптимизации работы программы.
А если писать свой клиент-сервер которые общаются по своему протоколу, то такое просто необходимо юзать для снижения трафа
|
|
|

22.06.2009, 21:28
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Вообще это можно использовать не только в сетевых приложениях, а везде ) Лишних пару сэкономленных байт еще никому не мешали.
Added: перечитал пару статей: действительно, скорость при использовании прагм компилятора падает. Иногда значительно.
Последний раз редактировалось Fata1ex; 23.06.2009 в 09:06..
|
|
|

22.06.2009, 23:46
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Кстати не всегда это делать желательно, потому как бываются случае что
адрес переменной должен быть выравнен на 4 байта иначе будет ошибка.
Такое встречается в некоторых WinAPI функцих которые просто убивают приложение если адрес буфера не выравненн на 4 байта
|
|
|

23.06.2009, 00:27
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
это еще приводит к замедлению работы, ибо обращение к невыравненной ячейке памяти дает штраф
При этом различные процессоры по-разному подходят к адресации слов.
Во-первых, некоторые процессоры (PDP-11, SPARC) запрещают обращения к словам, адрес которых не кратен размеру слова, и генерируют при попытках такого обращения исключительную ситуацию ошибки шины. Другие процессоры, например VAX и х86 такие обращения разрешают, но в документации есть честное предупреждение, что обращения к невыровненным словам будут минимум в два раза медленнее, чем к выровненным (рис. 2.4).
|
|
|

23.06.2009, 09:04
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Добавил несколько несложных задачек. Не решены задания 2, 9, 10, 11, 12, 13, 14.
С радостью выслушаю любые ваши предложения и замечания )
|
|
|

23.06.2009, 11:01
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
здание 12 хочу решить так ))
Код:
int a = 0;
char * k = str;
while (k[0])
{
a += k[0];
k++;
}
|
|
|

23.06.2009, 11:07
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Нужно отредактировать исходный код )) Хотя твоя версия, безусловно, верна.
|
|
|
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Задания
|
~Fenix~ |
Болталка |
11 |
13.05.2006 11:03 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|