■ 16진수 → 10진수
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := IntToStr(StrToInt('$'+Edit1.text));
end;
■ 16진수 → 10진수
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.text := IntToHex(StrToInt(Edit1.Text),1); // 숫자는 자리수를 표시해준다.
end;
■ 10진수 → 2진수
procedure TForm1.Button1Click(Sender: TObject);
var
temp_str : string;
temp_int : Integer;
begin
temp_int := StrToInt(Edit1.Text); // 문자를 숫자로 변환
//
repeat
if Odd(temp_int) then // Odd뜻 : temp_int 가 홀수이면
begin
temp_str := '1' + temp_str; // 홀수이면 1을 추가
end else
begin
temp_str := '0' + temp_str; // 짝수이면 0을 추가
end;
//
temp_int := temp_int shr 1; // shr = Shift Right, 2진수를 1칸 쉬프트
until temp_int = 0;
//
Edit2.Text := temp_str;
end;
* shr 란 무엇인가?
shr과 shl은 논리연산자입니다.. (혹은 비트연산자)
각각 shift right, shift left 를 말합니다.
흠..논리회로 같은거 공부하셨으면 비트 연산에 대해 아실텐데..
하튼 간단하게 말씀드리면..
011011 이라는 2진수가 있을때 shr 2 하면 000110 이렇게 오른쪽으로 두칸
쉬프트 됩니다.
011011 을 shl 2 하면 101100 이 되겠지요
x shl y 에서 x를 y bit만큼 왼쪽으로 bitwise shift합니다.
이것은 곱하기와 나누기 효과를 낼 수 있는데요..
shl의 경우 x 곱하기 2의 y승 이 됩니다.
예를 들어..
01101(10진수로 13)을 shl 1 했을때의 결과는
11010(10진수로 26)이 되므로 두배가 된 것을 알 수 있습니다.
// 참조
■ 2진수 → 10진수
procedure TForm1.Button1Click(Sender: TObject);
var
temp_int : Integer;
i : Integer;
begin
temp_int := 0; // Integer 값은 처음에 0으로 초기화 해주어야 한다. 안하면 이상한 숫자가 생김
//
for i := 1 to Length(Edit1.Text) do // 1부터 Edit1.Text의 글자길이 까지 반복문
begin
if Edit1.Text[i] = '1' then // Edit1.Text 의 글자중에 1이면
begin
temp_int := (temp_int shl 1) + 1; // 1을 더한다
end else
begin
temp_int := (temp_int shl 1);
end;
end;
// 결과
Edit2.Text := IntToStr(temp_int);
end;
'델파이 프로그래밍 정보' 카테고리의 다른 글
ASCII to HEX Delphi 모듈 (0) | 2017.05.08 |
---|---|
MOXA 보드 CP-118U RS-232설정하기 (0) | 2017.04.27 |
RF 리더 프로그램 (0) | 2017.04.11 |
User_Component 자료 (0) | 2017.04.04 |
컴포넌트 기본 사용법 - 3강 (0) | 2017.04.03 |
댓글