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

Вниз

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

 
AndrewVolkov   (2002-11-22 20:40) [0]

Добрый вечер всем.
Читаю байт
а как посмотреть его???
если я хочу узнать что в нем записано - типа 0 0 1 1 0 1 0 1


 
Gigabyte   (2002-11-22 21:01) [1]

Используй логические операции и маски соответствующих бит:
0000 0001b == 1
0000 0010b == 2
0000 0100b == 4
и т.д.... Потом:

if (B and 1) <> 0 then "Бит 1 установлен"
if (B and 4) <> 0 then "Бит 4 установлен",

где B - твой байт.


 
TTCustomDelphiMaster ©   (2002-11-22 21:04) [2]

var
b: byte;
i: integer;
s: string;
begin
b:=55;
for i := 0 to 7 do
if ((b shr i) and 1) = 1 then
s := "1" + s
else
s := "0" + s;
ShowMessage(s);
end;


 
asmith   (2002-11-22 21:05) [3]

В Дельфи есть полезный класс TBits - обеспечивает в том числе доступ к отдельным битам, как к элементам массива.


 
AndrewVolkov   (2002-11-22 21:07) [4]

to Gigabyte
Извини, но я че то ниче из этого не понял.
Если можно, можно кодом на Delphi
Что значит b в конце записи 0000 0001
и что значит and между (B и 1)

Поясните, а?
Спасибо


 
Song ©   (2002-11-22 21:17) [5]

b в написании Gigabyte (22.11.02 21:01) означает признак двоичного числа.


 
Ich Hasse ©   (2002-11-22 21:20) [6]

b расшифровывается как boolean
d - соответственно десядичная (decadence кажется)
h - hex (шестнадцатиричная)


 
TTCustomDelphiMaster ©   (2002-11-22 21:23) [7]

t - троичная
f - четверичная
fv - пятеричная
s - шестиричная
sv - семиричная
o - восьмиричная
и т.д.


 
AndrewVolkov   (2002-11-22 21:26) [8]

TTCustomDelphiMaster там почти все ясно, спасибо, только что правильно означает запись ((b shr i) and 1). То что сдвигаемся на 1 (бит или байт) вправо (почему направо, а не налево) и что значит (and 1).
А про 2 объяснение - про признак я понял, но как это реализовать в коде не совсем ясно.
В книгах полазил, там не объясняется это.


 
TTCustomDelphiMaster ©   (2002-11-22 21:31) [9]


> То что сдвигаемся на 1 (бит или байт)

на бит


> вправо (почему направо, а не налево

потому что младшие разряды находятся справа


> и что значит (and 1).

Все биты кроме нулевого гасятся


> А про 2 объяснение - про признак я понял, но как это реализовать
> в коде не совсем ясно

Через кучу ifов


 
Моджахед   (2002-11-22 22:49) [10]


Ich Hasse © (22.11.02 21:20)

b расшифровывается как boolean
d - соответственно десядичная (decadence кажется)
h - hex (шестнадцатиричная)


:-)))


 
Anatoly Podgoretsky ©   (2002-11-22 23:07) [11]

Булева система :-) по модулю буль


 
Vlad1 ©   (2002-11-23 18:39) [12]

>AndrewVolkov

var
b: byte;

s: string;
begin
s:=IntToHex(b,2);
//получил байт в шестнадцатиричном виде (две цифры)
//каждая из 2-х цифр - полбайта
//перевести шестнадцатиричную цифру в тетраду несложно
// типа $a == 1010b; $5 == 0101b; $f == 1111b

end;


 
Ihor Osov'yak ©   (2002-11-23 19:14) [13]

2 AndrewVolkov (22.11.02 20:40),Vlad1 © (23.11.02 18:39)
ну блин, робяты, вы даете ...


function ByteToBitStr(aB:byte):string;
var mask:byte;
i:integer;
begin
mask:=$80;
result:="00000000";
for i:=1 to 8 do begin
if aB and mask > 0 then result[i] := "1";
mask = mask shr 2;
end;
end;


2 AndrewVolkov (22.11.02 21:26) - В разделе потрепатся Зотов две ветки дал, типа начинающим .... Там кажись об это в том числе обговаривается (как понять) ...



 
AndrewVolkov   (2002-11-23 20:42) [14]

to Ihor Osov"yak
а поточнее, где эти ветки, не подскажешь
Я полазил не нашел...


 
Vlad1 ©   (2002-11-23 21:53) [15]


> 2 AndrewVolkov (22.11.02 20:40),Vlad1 © (23.11.02 18:39)
> ну блин, робяты, вы даете


Я просто хотел дать альтернативу к варианту TTCustomDelphiMaster.

function ByteToBitStr(b:byte):string;
var s:string;
const ar1:array[0..15]=("0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111");
begin
s:=inttohex(b,2);
result:=ar1[strtoint("$"+s[1])]+ar1[strtoint("$"+s[2])];
end;





 
Ihor Osov'yak ©   (2002-11-23 22:35) [16]

2 AndrewVolkov (23.11.02 20:42)
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1035836141&n=3

Первый этап сам поищи ...


 
AndrewVolkov   (2002-11-23 23:41) [17]

Большое всем спасибо. Пойду читать.


 
AndrewVolkov   (2002-11-24 01:35) [18]

to Ihor Osov"yak
mask := mask shr 1;
:-)



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

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

Наверх




Память: 0.51 MB
Время: 0.013 c
1-14604
nika_ufc
2002-11-24 17:34
2002.12.05
все хорошо НО.............


14-14802
Anar
2002-11-14 01:00
2002.12.05
Я с этими архивами уже заколебался...


8-14693
Groove
2002-08-10 21:12
2002.12.05
MP3


3-14479
Zn
2002-11-19 11:03
2002.12.05
Связывание разных типов данных в SQL-запросах


1-14629
REP
2002-11-25 07:47
2002.12.05
Композитный отчет QReport