Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как посмотреть все биты байта??? [D7, WinXP]


AndrewVolkov ©   (2002-11-22 20:40:00) 

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


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

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


AndrewVolkov   (2002-11-23 23:41:00) [2]

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


Ihor Osov'yak   (2002-11-23 22:35:00) [3]

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

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


Vlad1   (2002-11-23 21:53:00) [4]


> 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;




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

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


Ihor Osov'yak   (2002-11-23 19:14:00) [6]

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) - В разделе потрепатся Зотов две ветки дал, типа начинающим .... Там кажись об это в том числе обговаривается (как понять) ...


Vlad1   (2002-11-23 18:39:00) [7]

>AndrewVolkov

var
b: byte;

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

end;


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

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


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


Ich Hasse © (22.11.02 21:20)

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


:-)))


TTCustomDelphiMaster   (2002-11-22 21:31:00) [10]


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

на бит


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

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


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

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


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

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


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

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


TTCustomDelphiMaster   (2002-11-22 21:23:00) [12]

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


Ich Hasse   (2002-11-22 21:20:00) [13]

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


Song   (2002-11-22 21:17:00) [14]

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


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

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

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


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

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


TTCustomDelphiMaster   (2002-11-22 21:04:00) [17]

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;


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

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

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо