Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.29;
Скачать: CL | DM;

Вниз

Как работать с двоичными числами?   Найти похожие ветки 

 
BillyJeans ©   (2003-05-07 09:22) [0]

мне нужно сделать что-то похожее на:
Value := (Value or 00010000 b)
для того, чтобы выставить 5й бит... но вот с признаком двоичной системы у меня как в ассемблере не получилось :(


 
MBo ©   (2003-05-07 09:34) [1]

Value OR (1 shl 4)


 
Digitman ©   (2003-05-07 09:37) [2]

ну а чем hex-формат представления маски не устраивает ?
Value := (Value or $10) - вот и выставлен тот же самый 5-й бит)

уж в кр.случае

Value := (Value or (1 shl 4)) - тот же самый 5-й бит


 
Юрий Зотов ©   (2003-05-07 09:41) [3]

Все хорошо, все верно, но только это 4-й, а не 5-й бит...
:о)


 
BillyJeans ©   (2003-05-07 09:43) [4]

а если мне нужно сделать вот так:
Value := (Value or 10010010b)???


 
Anatoly Podgoretsky ©   (2003-05-07 09:43) [5]

Это степень четвертая, а бит третий, я считал с нуля слева направао :-)


 
Anatoly Podgoretsky ©   (2003-05-07 09:46) [6]

BillyJeans © (07.05.03 09:43)
$92
А откуда ты узнал про двоичную нотацию?
А когда Зотов уроки проводил, ты где был?
Яндекс знает все.
Учиться, учиться и еще раз учиться.


 
BillyJeans ©   (2003-05-07 09:48) [7]

Кто сказал, что бит не пятый?! Двоичную систему подзабыли :)


 
BillyJeans ©   (2003-05-07 09:51) [8]

Я вопрос задал про двоичную систему! Мне шестнадцатеричный вид НЕ НУЖЕН!!!
А двоичная нотация, если кто не знает используется вот где:

asm
or ax, 0000000000010000b
end;

это для тех, кто не знает асма!!!


 
evvcom ©   (2003-05-07 09:55) [9]

To: Знаток асма (BillyJeans):
А чем тебя такая запись не устраивает?
asm
or ax, $10
end;


 
Anatoly Podgoretsky ©   (2003-05-07 09:58) [10]

BillyJeans © (07.05.03 09:51)
Ну не устраивает, так не устраивает, хозяин барин, но в таком случае очень просто, забудь про Паскаль в лице Дельфи.


 
BillyJeans ©   (2003-05-07 09:58) [11]

2 evvcom
Шестнадцатеричная запись не обладает необходимой наглядностью!!!


 
evvcom ©   (2003-05-07 10:02) [12]


> Шестнадцатеричная запись не обладает необходимой наглядностью!!!

Да что ты говоришь? А в двоичной что легче нулики и единички считать, что на каком месте стоит? Да шестнадцатиричная гораздо нагляднее и проще! Научись быстро тетрады в двоичном виде в уме представлять - и не будет никаких проблем в этом плане!


 
Anatoly Podgoretsky ©   (2003-05-07 10:02) [13]

BillyJeans © (07.05.03 09:58)
Что ты говоришь, а константы тебе нравятся?


 
BillyJeans ©   (2003-05-07 10:07) [14]

Если мне нужно выставить или сбросить 1, 4, 7 и 14 бит я лучше так в двоичной системе и напишу, зачем мне переводить ее в hex??? я не любитель усложнять себе жизнь!


 
evvcom ©   (2003-05-07 10:13) [15]

Что проще воспринять:
$00004091 или 00000000000000000100000010010010?
Вот и подумай, в каком случае жизнь усложняется? А еще проще почитай Anatoly Podgoretsky © (07.05.03 10:02)


 
Separator ©   (2003-05-07 10:24) [16]

А чем Hex не нравиться? тут тоже вес просто:
----------------------------------------------------------
| № бита | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|--------|-----|-----|-----|-----|-----|-----|-----|-----|
| Hex | $01 | $02 | $04 | $08 | $10 | $20 | $40 | $80 |
----------------------------------------------------------
и так далее


 
Юрий Зотов ©   (2003-05-07 10:25) [17]

Еще один воинствующий... знаток ассемблера. Видимо, уже целых пару недель его изучает. К Hex еще не привык, что это упрощение, а не усложнение, тоже еще не понял. Зато пальцы топырить уже научился. Странно... а вроде бы, не мальчик...


 
Separator ©   (2003-05-07 10:25) [18]

эээ, мда


 
Anatoly Podgoretsky ©   (2003-05-07 10:39) [19]

Еще большим упрощением являются битовые константы, весь WinAPi на них построен. Вот это действительно делает жизнь простой, кроме того никто не мешает их делать битоподобными.


 
BillyJeans ©   (2003-05-07 10:39) [20]

для тех, кто в танке:
биты нумеруются с права на лево!!! Т.е. писанина от Separator должна звучать так :
А чем Hex не нравиться? тут тоже вес просто:
----------------------------------------------------------
| № бита | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|--------|-----|-----|-----|-----|-----|-----|-----|-----|
учите системы счисления! и прочтите мой вопрос еще раз, я спросил как сделать, а не чем заменить!!!


 
BillyJeans ©   (2003-05-07 10:43) [21]

2 evvcom
к примеру 00000000000000000100000010010010 я сразу вижу, над какими битами я работаю, а если $00004091 то что тут видно?



 
evvcom ©   (2003-05-07 10:48) [22]


> биты нумеруются с права на лево!!!

Во новость. Извини, мы не знали! :)
У Separator © (07.05.03 10:24) кроме заголовка в таблице еще имеются данные, которые нормально соответствуют нумерации битов.
Анекдот: "Сестра, может в реанимацию? - Доктор сказал в морг, значит в морг!" Кажется это тот случай.


 
Romkin ©   (2003-05-07 10:51) [23]

а если $00004091 то что тут видно?
0,4,7 биты в первом байте, 3 бит во втором байте - гораздо быстрее, чем считать нулики (нумерую от нуля, ессно)


 
evvcom ©   (2003-05-07 10:55) [24]


> 3 бит во втором байте

Только не 3, а 6.

Я же говорю, что это тот случай.


 
Юрий Зотов ©   (2003-05-07 10:57) [25]

> BillyJeans © (07.05.03 10:39)

Для тех, кто в соседнем танке.

> биты нумеруются с права на лево!!!

И начиная с нуля. Поэтому - прочтите свой вопрос еще раз и тоже учите системы счисления, крутой Вы наш. Кстати, для платформ x86 (и совместимых с ними) где "право", а где "лево" - вопрос не столь однозначный. Однозначность появляется лишь в трактовке компилятора/ассемблера.

> И, я спросил как сделать, а не чем заменить!!!

После того, как выучите системы счисления (включая шестнадцатиричную), переходите к изучению языков и компиляторов, что и какие из них поддерживают, а что - нет, и почему это так. Там все и прочтете. Спустя какое-то время, надеюсь, сможете написать свой компилятор, где будет все, что Вам угодно. Только к тому времени, думаю, Вы поймете, что Hex все же удобнее, чем Bin.


 
Anatoly Podgoretsky ©   (2003-05-07 11:00) [26]

BillyJeans © (07.05.03 10:39)
Не говори за всех, как нумеровать внутренне дело человека, нумеруют оп разному.
Как сделать тебе давно ответили, в Object Pascal никак, такой синтаксис не поддержан.


 
BillyJeans ©   (2003-05-07 11:02) [27]

Огромное спасибо знатокам, за их исчерпывающие ответы!!!


 
Digitman ©   (2003-05-07 13:27) [28]


> BillyJeans


для тех, кто "в танке" :

Хамить, сударь, изволь в другом месте !

Да и при условии, что в русский язык ты таки выучишь (прежде чем говорить о "языках" сист5ем счисления), вряд ли это даст достаточное основание для хамства. А в русском языке "справа налево" пишется слитно !


> учите системы счисления


Изволь для начала выучить как следует родной язык ! Если ты - русский.


 
BillyJeans ©   (2003-05-07 14:44) [29]

2 Digitman
на себя посмотри!


 
Zelius ©   (2003-05-07 15:00) [30]

Зря вы на человека набросились, некрасиво выглядит...
Достаточно было ответить, что дельфи не поддерживает двоичных константин.


 
Digitman ©   (2003-05-07 15:19) [31]


> BillyJeans


Видишь ли, я вовсе не претендую на исключительное знание родного языка и его правил. Да и опечатки у меня, как и у многих других ув.коллег, далеко нередки, равно как и малозначимые (по кр.мере, imho, для чтения и понимания текста) граммат./синтакс./орфогр. и пр. ошибки.

Но ! Когда неприкрытое хамство сопровождается еще и такими вот "перлами" - извини, мне редко удается промолчать и не высказаться по этому поводу


 
BillyJeans ©   (2003-05-07 15:29) [32]

вот такие "перлы" были адресованы предыдущим собеседникам.


 
_Nicola_   (2003-05-07 16:56) [33]

2 BillyJeans
>я сразу вижу, над какими битами я работаю
Видно, что больших проектов ты не писал, иначе давно бы научился нормальными масками пользоваться.
А если все-таки не видно, то можешь на пальцах загибать, вон они у тебя какие!


 
Fantasist.   (2003-05-07 19:07) [34]

Эх, даже грустно:

"Ну, дурак!" - "Сам дурак!"

Такое, кстати говоря, встречается только в русских форумах. Хотя, конечно, так веселее. :)


 
BillyJeans ©   (2003-05-12 11:19) [35]

2 _Nicola_ & Fantasist.
О чем это вы???


 
han_malign ©   (2003-05-12 11:32) [36]

const
TAPE_DRIVE_FIXED = $000000001;
TAPE_DRIVE_SELECT = $000000002;
TAPE_DRIVE_INITIATOR = $000000004;
TAPE_DRIVE_ERASE_SHORT = $000000010;
TAPE_DRIVE_ERASE_LONG = $000000020;
TAPE_DRIVE_ERASE_BOP_ONLY = $000000040;
TAPE_DRIVE_ERASE_IMMEDIATE = $000000080;
TAPE_DRIVE_TAPE_CAPACITY = $000000100;
TAPE_DRIVE_TAPE_REMAINING = $000000200;
TAPE_DRIVE_FIXED_BLOCK = $000000400;
TAPE_DRIVE_VARIABLE_BLOCK = $000000800;
TAPE_DRIVE_WRITE_PROTECT = $000001000;
TAPE_DRIVE_EOT_WZ_SIZE = $000002000;
TAPE_DRIVE_ECC = $000010000;
TAPE_DRIVE_COMPRESSION = $000020000;
TAPE_DRIVE_PADDING = $000040000;
TAPE_DRIVE_REPORT_SMKS = $000080000;
TAPE_DRIVE_GET_ABSOLUTE_BLK = $000100000;
TAPE_DRIVE_GET_LOGICAL_BLK = $000200000;
TAPE_DRIVE_SET_EOT_WZ_SIZE = $000400000;
TAPE_DRIVE_RESERVED_BIT = $080000000;
.............
if((DrivePara.FeaturesLow and TAPE_DRIVE_GET_LOGICAL_BLK)<>0)then...
...........
CreatFile(...,FILE_SHARE_READ or FILE_SHARE_WRITE,...)

et cetera
- гораздо нагляднее
- надеюсь, что такой побитовые or,and,xor,not - объяснять не надо


 
BillyJeans ©   (2003-05-12 11:41) [37]

Похоже han_malign читать не умеет.... :(
на какой мне hex???


 
han_malign ©   (2003-05-12 11:44) [38]

FILE_SHARE_READ or FILE_SHARE_WRITE
- это hex?????
в таком случае 00010010b - это тоже hex, только в бинарной мнемонике.


 
BillyJeans ©   (2003-05-12 11:47) [39]

2 han_malign
ты гляжу самый умный :)
hex это то, что ты написал - $080000000;
а вопрос был кокраз про 00010010b!!!


 
han_malign ©   (2003-05-12 11:57) [40]

> hex это то, что ты написал - $080000000;

- я так же мог написать 2147483648(10000000000000000000000000000000b) - от этого машинное представление менее бинарным не станет.
З.Ы. Что бы пресечь дальнейшие препирательства, добавлю
((1 shl 3)or(1 shl 10))- это константа, вычисляемая на этапе компиляции
DIXI


 
Palladin ©   (2003-05-12 11:57) [41]

нильзя в поскале запесать как канстанту чесло в дваичном вите


 
Sha ©   (2003-05-12 12:12) [42]

зя, тока он ни паймет


 
Palladin ©   (2003-05-12 12:22) [43]

в рамках синтаксеса поскаля низя


 
Nikolay M. ©   (2003-05-12 12:29) [44]

Удалено модератором
Примечание: Личная переписка


 
Nikolay M. ©   (2003-05-12 12:44) [45]

Удалено модератором
Примечание: Или читай внимательно правила, или организуй свой сайт и не надо обсуждать политику модерирования


 
Sha ©   (2003-05-12 12:51) [46]

нипанимает поскаль арфаграфию


 
circul ©   (2003-05-12 13:04) [47]

>BillyJeans

Умерь свои амбиции.

Напиши подобные функции, если с HEX-форматом не умеешь работать:

//Перевод из двоичной в десятичную систему
function BI(const aSrc: String): Int64;
var
tPower: Int64;
i: Integer;
begin
Result := 0;
tPower := 1;
for i := Length(aSrc) downto 1 do
begin
if (aSrc[i]="b") or (aSrc[i]="B") then continue;
if aSrc[i]="1" then Result := Result + tPower;
tPower := tPower*2;
end;
end;


//Перевод из десятичной в двоичную систему

function IB(const aSrc: Int64): String;
var
tDiv,tInt: Int64;
begin
tDiv := aSrc;
Result := "";
while tDiv>0 do
begin
tInt := tDiv shr 1;
if (tInt shl 1) = tDiv then
begin
Result := "0" + Result;
end
else
begin
Result := "1" + Result;
end;
tDiv := tInt;
end;
if Result = "" then Result := "0";
end;


 
BillyJeans ©   (2003-05-12 14:51) [48]

2 circul
IntToBin чем не устроил?


 
BillyJeans ©   (2003-05-12 15:01) [49]

2 circul
А ЗАЧЕМ МНЕ HEX???


 
uw ©   (2003-05-12 15:07) [50]

>BillyJeans © (07.05.03 09:22)

Посмотри, может быть, тебе это понравится:

procedure x;
var
s: set of 0..7;
i: Integer;
begin
i := SizeOf(s); // i = 1
s := [3];
s := s + [4, 7]; // s = [3, 4, 7]
s := s - [4]; // s = [3, 7]
end;



 
BillyJeans ©   (2003-05-12 15:29) [51]

2 uw
функцию я и сам напишу, только НЕ НУЖНА ОНА МНЕ!!!


 
Anatoly Podgoretsky ©   (2003-05-12 15:51) [52]

По моему мы возможности форума уже исчерпали, тебе осталось только обратиться к Борланду с претензией.


 
uw ©   (2003-05-12 15:54) [53]

>Anatoly Podgoretsky © (12.05.03 15:51)

А зачем ему Борланд? НЕ НУЖНА ОНА ЕМУ!!!


 
Anatoly Podgoretsky ©   (2003-05-12 16:24) [54]

А зачем нам кузнец, нам и без кузнеца хорошо.


 
Домарощинер ©   (2003-05-12 17:49) [55]

Человек сам кузнец своего несчастья.



Страницы: 1 2 вся ветка

Текущий архив: 2003.05.29;
Скачать: CL | DM;

Наверх




Память: 0.61 MB
Время: 0.026 c
1-94823
nevalex
2003-05-19 14:49
2003.05.29
Как написать компанент что-то вроде TMediaplyer?


1-94894
Ajax
2003-05-15 23:07
2003.05.29
Самое нижнее окно.


1-94810
OlegM
2003-05-19 11:48
2003.05.29
Как удалить из StringList последние два символа


3-94747
Andrey-k
2003-05-10 20:40
2003.05.29
Win9.x и клиент InterBase для них


14-95044
Scorpx
2003-05-09 08:42
2003.05.29
Изготовление форума.