Ответы пользователя по тегу C
  • Получить метод запаковки/распаковки файла?

    15432
    @15432
    Системный программист ^_^
    Приложите пример файла, может узнаю алгоритм.
    Если нет самого запаковщика - смотреть содержимое. В заголовке может содержаться подсказка. А так, определить произвольный алгоритм запаковки очень затруднительно.
    Ответ написан
    9 комментариев
  • Как пользоваться stdint.h?

    15432
    @15432
    Системный программист ^_^
    Для крипты, если хочется ручками потрогать - либа BigDigits, всё необходимое есть (проверка на простоту, возведение в степень, работа с очень большими числами, и т.д.)
    www.di-mgt.com.au/bigdigits.html

    по вашему вопросу - у вас число неправильное
    184467440737095511615
    18446744073709551615 <-- правильное

    (меня плющит, или в вопросе число поменялось на правильное?)

    и можно юзать тип unsigned long long

    unsigned long long number = 18446744073709551615; //у меня компилится без нареканий

    имхо, проще в шестнадцатеричной:
    unsigned long long number = 0xFFFFFFFFFFFFFFFF;
    Ответ написан
    3 комментария
  • Как оборудование "понимает" программу?

    15432
    @15432
    Системный программист ^_^
    Микроконтроллер не понимает, а тупо исполняет инструкции. Это ваша программа должна правильно сконфигурировать аппаратный порт микроконтроллера, чтобы на его выходе появилась логическая единица и светодиод зажёгся.
    Порядок действий отличается в зависимости от микроконтроллера. Где-то достаточно записать бит по определенному адресу памяти, где-то используются специальные ассемблерные команды для управления портами, и т.д.

    Программируется всё это обычно на уровне абстракций, с использованием готовых библиотек. Тот же Arduino поглядите. Глубокие знания электроники требуются для разработки устройств с этими микроконтроллерами.
    Ответ написан
  • Почему этот код возвращает такой странный ответ?

    15432
    @15432
    Системный программист ^_^
    Вы не инициализировали key
    int key = 0;
    Ответ написан
    4 комментария
  • Как скомпилировать WIN-32 приложения для запуска на машинах без С/С++ компилятора?

    15432
    @15432
    Системный программист ^_^
    Свойства проекта / C++ / Code Generation / Runtime Library - сменить Multi-threaded DLL на Multi-threaded
    Ответ написан
    Комментировать
  • Что происходит при выполнении кода C библиотек в .NET?

    15432
    @15432
    Системный программист ^_^
    Динамическая библиотека на C загружается в оперативную память и затем её код исполняется напрямую (возможно, с некоторым преобразованием передаваемых структур из managed в unmanaged и обратно).
    В случае с аналогичным кодом на C#, не происходит преобразования данных managed/unmanaged, но сам код при этом выполняется CLR, что может быть медленнее скомпилированного кода на C.
    Если ваш код производит сложные вычисления, требующие минут или даже часов времени, рекомендую использовать библиотеки на C. В остальном - как будет удобнее.
    Ответ написан
    Комментировать
  • Чем отличается динамическая переменная от переменной в блоке?

    15432
    @15432
    Системный программист ^_^
    В первом случае c - указатель на выделенную область памяти в куче размером 4 байта. Переменная располагается в оперативной памяти (RAM) и для обращения к ней, процессор вынужден выполнять чтение и запись [относительно] медленной оперативной памяти.

    Во втором случае c - локальная переменная, компилятор скорее всего превратит все действия по работе с ней в арифметические операции с регистрами процессора, обращение к которым на порядки быстрее, чем работа с ОЗУ.

    примерный ассемблерный псевдокод в первом случае (смешал несколько архитектур :) не воспринимайте буквально)

    mov r3, #4 //размер выделяемой области 4 байта
    call malloc() //выделим память
    mov r28, r3 //сохраним возвращенное значение адреса памяти
    str r29, r28[0] //сохраним a (r29) в выделенную память (r28[0])
    mov r29, r30 //присвоим a (r29) значение b (r30)
    ldr r30, r28[0] //присвоим b значение *c
    mov r3, r28 //адрес для очистки памяти
    call free() //удаление выделенной области


    следует заметить, что чтение и запись из ОЗУ - относительно медленные операции

    во втором случае скомпилированный код будет гораздо компактнее и выполнится практически моментально

    mov r28, r29 //c = a
    mov r29, r30 //a = b
    mov r30, r28 //b = c
    Ответ написан
    2 комментария