Использование оператор (|
) битового "ИЛИ" для установки немного.
number |= 1UL << n;
, Который установит n
th бит [1 110]. n
должен быть нуль, если Вы хотите установить 1
, стоун укусил и так далее [до 1 113], если Вы хотите установить n
, th укусил.
Использование 1ULL
, если number
более широко, чем [1 117]; продвижения [1 118] не происходит до окончания оценки 1UL << n
, где это - неопределенное поведение сместиться больше, чем ширина long
. То же относится ко всей остальной части примеров.
Использование поразрядная операция И (&
) для очистки немного.
number &= ~(1UL << n);
, Который очистится n
th бит [1 123]. Необходимо инвертировать строку битов с оператором (~
) битового "НЕ", тогда И этим.
оператор XOR (^
) может использоваться для переключения немного.
number ^= 1UL << n;
, Который переключится n
th бит [1 127].
Вы не попросили это, но я мог бы также добавить его.
Для проверки немного сместите номер n направо, тогда поразрядно И это:
bit = (number >> n) & 1U;
, Который поместит значение n
th бит [1 129] в переменную bit
.
Установка n
, th укусил или к [1 132] или к 0
, может быть достигнут со следованием 2's дополнительная реализация C++:
number ^= (-x ^ number) & (1UL << n);
Бит n
будет установлен, если x
будет 1
, и очищен, если x
0
. Если x
имеет некоторое другое значение, Вы получаете мусор. x = !!x
будет booleanize это к 0 или 1.
Для создания этого независимого политика 2's дополнительное поведение отрицания (где -1
имеет весь набор битов, в отличие от этого, на 1's дополнение или реализация C++ знака/величины), используйте неподписанное отрицание.
number ^= (-(unsigned long)x ^ number) & (1UL << n);
или
unsigned long newbit = !!x; // Also booleanize to force 0 or 1
number ^= (-newbit ^ number) & (1UL << n);
Это обычно - хорошая идея использовать неподписанные типы для портативной побитовой обработки.
или
number = (number & ~(1UL << n)) | (x << n);
(number & ~(1UL << n))
очистится n
, th укусил, и (x << n)
установит n
, th укусил к [1 146].
Это - также обычно хорошая идея не скопировать/вставить кодировать в целом, и столько людей использует макросы препроцессора (как [1 147] сообщество ответ Wiki далее вниз ) или своего рода инкапсуляция.
В дорожной карте Delphi есть четыре проекта:
Вы ищете Delphi X, но неизвестно, когда он появится вне. Следующей версией Delphi станет Delphi Weaver.
Это столько, сколько есть в открытом доступе. Марко обычно хорошо осведомлен. Но даты выпуска версии не сообщаются.
Project Weaver
Ориентирован на удобство использования (новая IDE Insight, поддержка Touch), Связь, улучшенная документация, Производительность команды, DataSnap с HTTP, REST-сервер, .NET-прокси для DataSnap, поддерживаются обратные вызовы, dbExpress с родным Firebird поддержка, Аспектно-ориентированное программирование поддержка, интеграция с Subversion, Поддержка Windows 7 и Direct2D, SOAP 1.2 клиенты, улучшенный RTTI
Проект Delphi «X»
Кросс-платформенная поддержка MacOS и Linux , сервер и клиенты на Linux и Mac
Project Chromium
Все о производительности разработчиков, программе форматирования кода Pascal, документация для ToolsAPI, новая Модель привязки данных, интегрированные инструменты БД
Project Commodore
64-битная Windows, компилятор + RTL + VCL, многоядерная поддержка, параллельный RTL
Будущее (далеко)
Облачные вычисления, Web 3.0 ++, за пределами RIA , Устройства, бытовая техника, безопасность, соответствие
Beyond the Beyond
Функциональное программирование, декларативное программирование, естественное ввод, другие платформы…
Ничего официального от Embarcadero, но я думаю, что примерно в 2010-2011 годах на основании:
Генеральный директор Embarcadero Уэйн Уильямс сказал в интервью The Register:
Уильямс говорит о кроссплатформенности сейчас более высокий приоритет, чем 64-битный компилятор, хотя оба планируются, и что мы увидим первые кроссплатформенный выпуск в следующем году .
Помимо Роберта Лав в своем блоге комментирует, что касается следующих версий Delphi:
Ничего не было высечено в камне. Эти текущие планы, и они могут измениться. Сроки, которых избегали, кроме одного комментарий был сделан в Q & A ... Они сделали не вижу ничего в этом списке принимая длиннее 201 1. Так что 2-3 года может быть практично, поскольку временные рамки были действительно избегал, я бы не планировал что угодно прямо сейчас.
Несколько вещей, которые следует учитывать при прогнозировании Delphi:
В DelphiLive! Ник объявил, что сейчас они изменили способ разработки. Раньше все работали над следующим выпуском. Это усложняло своевременное и качественное выполнение крупных изменений. Таким образом, была бы одна версия с кодовым именем, над которой они работали, и на этом все.
Теперь есть несколько проектов с кодовым именем, которые не обязательно привязаны к конкретному выпуску. Так, например, список проектов с кодовыми именами, которые здесь все предоставили, не обязательно является отдельным выпуском Delphi. Они возьмут те проекты, которые «готовы» когда у них будет релиз и включите их.
Если вам нужна дополнительная информация о дорожной карте, вы можете посмотреть серию видео, которые я снял в DelphiLive! или DelphiLive! Резюме и адрес продукта .
Насколько мы можем ожидать следующего выпуска Delphi, я написал сообщение в блоге об этом, основанное на информации, предоставленной в DelphiLive! ,
Если вы собираетесь использовать эту информацию для планирования покупок Delphi, и в настоящее время у вас нет Delphi 2009, тогда купите Delphi 2009 сейчас (по крайней мере, до 24 августа ). У них есть отличная реклама, и вы можете получить Software Assurance, а затем вы получите все новые версии, которые выйдут в следующем году.
Delphi 2009 - фантастический выпуск, и вы захотите быстро освоить дженерики и Unicode сейчас, чтобы вы могли лучше использовать их в следующих выпусках.
В Stack Overflow Podcast # 61 Мигель де Икаса много рассказывает о своей работе над Mono и кратко упоминает Delphi, поэтому можно предположить, что любая кроссплатформенная поддержка будет будет построен вокруг Моно.
Раньше они пробовали это с Kylix . Будем надеяться, что история здесь не повторится.
Последнее, что нам нужно, это больше проприетарных приложений для разработки.
Мы в Twinforms обеспечиваем поддержку разработки для Mac и Linux с использованием текущих версий Delphi (для Linux и Mac вам необходимо скомпилировать исходный код с помощью FreePascal). Взгляните на скринкаст, в котором показано, как разработать кросс-платформенное приложение с использованием Delphi и FreePascal - http://twinforms.com/products/wxformsdelphi/screencasts.php