Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
7-14834
BOI
2002-10-03 13:44
2002.12.05
Как поймать окончание копирования файла


3-14445
Part
2002-11-18 13:44
2002.12.05
database update


3-14397
4x4
2002-11-15 15:30
2002.12.05
Считывание БарКода или Долларовой сетки


6-14722
Piton X
2002-10-09 09:22
2002.12.05
Как узнать список имен компьютеров в сети?


6-14716
Chlavik
2002-10-07 02:09
2002.12.05
Подключённый диск. IP - ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский