chuyên đề tin học chương 7 dữ liệu kiểu số nguyên - Pdf 22

Chuyªn Tin 10
DỮ LIỆU KIỂU SỐ NGUYÊN
I / Loại : Thường dùng 5 loại chính :
T/T Tên Miền giá trị Kích thước
1 Byte 0 255 1 Byte
2 ShortInt -128 127 1 Byte
3 Interger -32768 32767 2 Byte
4 Word 0 65535 2 Byte
5 LongInt -2147483648 2147483647 4 Byte
II / Các cách biểu diễn số nguyên :
1 - Dạng thập phân : Dùng các kí tự ‘0’ ‘9’
2 - Dạng nhị phân : Dùng 2 kí tự ‘0’ và ’1’
3 - Dạng Hecxa : Dùng các kí tự ‘0’, ’9’, và các chữ ‘A’,’B’, ,’F’
4 - Dạng cơ số n : Dùng n kí tự là ‘0’, ,’9’,’A’, ’F’, ,’Z’,
Thí dụ :
5 = 1*2
2
+ 0*2
1
+ 1+ 2
0
5 trong hệ nhị phân là : 101
15 = 1*2
3
+1*2
2
+ 1*2
1
+ 1+ 2
0
15 trong hệ nhị phân là : 11111

15
* N
15
+ a
14
* N
14
+ + a
3
* N
3
+ a
2
* N
2
+ a
1
* N
1
+ a
0
* N
0
Khi đó dạng N-phân của x là :
a
15
a
14
a
13

i-3
T
i-2
N
a
i-2
T
i-1
N
a
i-1
T
i
N
a
i
0
Trong hệ N- phân x được biểu diễn là a
i
a
i-1
a
i-2
a
2
a
1
a
0
150 2

236
Chuyªn Tin 10
___________________
x and y sẽ bằng 4 { 0100 }
x or y sẽ bằng 13 { 1101 }
x xor y sẽ bằng 9 { 1001 }
6 ) Phép Not trên số nguyên :
Not x = - ( X+1)
Thí dụ Not 5 = - 6
Từ đây suy ra định nghĩa số đối của số nguyên dương :
- x = ( Not x ) + 1
Vì thế trong hệ nhị phân người ta qui định nếu số x ( kiểu Integer ) có bit 15 bằng 1 thì x là số âm , ngược
lại bít 15 bằng 0 thì x là số dương.
Cho x=5 { x = 0000000000000101 }
Ta có
Not x = 1111111111111010
1 = 0000000000000001

- x = (Not x) +1 = 1111111111111011
Ta thử kiểm tra x + (-x) có bằng 0 hay không ?
x = 0000000000000101
-x = 1111111111111011

x + (-x) = 0000000000000000
Vậy định nghĩa số đối của x như trên không dẫn đến điều vô lý !
Vài nhận xét đặc biệt
1 ) X OR X = X
2 ) X XOR X = 0
3 ) Nếu X AND (1 SHL k ) = 1 SHL k thì Bít k của X là 1, ngược lại bít này bằng 0
IV / Một số hàm với đối số nguyên

For x := 1 to MaxInt do Taonhiphan(x);
Readln
END.
Cách 2 : Lập bảng phương án các luỹ thừa của cơ số N
Uses Crt;
Const A : Array[1 16] of LongInt=(1,2,4,8,16,32,64,128,256,512,1024,
2048,4096,8192,16384,MaxInt+1);
Var x : Integer;
k : Byte;
Procedure Taonhiphan(x : Integer);
Begin
k := 15;
While (x>0) do
Begin
While A[k]>x do
Begin
Write('0');
Dec(k);
End;
Write('1');
x := x-A[k];
Dec(k);
End;
While k>0 do
Begin
Write('0');
Dec(k);
End;
Writeln;
End;

Var p : Byte;
Begin
k := 3;
While (x>0) do
Begin
While A[k]>x do Begin Write('0'); Dec(k);End;
If k>=0 then
Begin
p := x div A[k];
Write(B[p]);
x := x-p*A[k];
Dec(k);
End;
End;
While (k>=0) do Begin Write('0'); Dec(k);End;
Writeln;
End;
BEGIN
Clrscr;
x := 90000;
TaoHecxa(x);
Readln
END.
Cách 2 : Dựa vào các hàm xử lý Byte
Uses Crt;
Const A : Array[0 15] of char ='0123456789ABCDEF';
Var x : Integer;
Procedure He16(x:Integer);
Begin
Write(x,': ','$');

sau khi bốc : trạng thái bằng 0 là điều kiện cần để thắng .
Nếu đến lượt máy bốc , trạng thái khác 0 thì máy phải bốc sao cho trạng thái bằng 0
Nếu đến lượt máy bốc , trạng thái đã bằng 0 rồi thì máy phải bốc 1 quân vu vơ để kéo dài trò chơi , đợi
vận may do người kia sau khi đi sẽ mang lại cho máy ( họ tạo trạng thái khác 0 cho máy trước khi máy
đi ). Tất nhiên nếu người chơi cũng biết qui luật thì máy đành chịu thua và vận may chỉ mỏng manh như
trận đấu bóng đá xẩy ra cơ hội hậu vệ đội bạn sút vào lưới của họ !
Phần bài chữa
Bài 1 :
Uses crt;
Const Max = 34;
H : String = '0123456789ABCDEFGHIKLMNOPQRSTUVXYZ';
Var c1,c2,so : Longint;
n : String;
Function Cosomin(S:String):Byte;
Var i : Byte; ch : Char;
Begin
ch := '0';
For i:=1 to length(s) do
If s[i]>ch then ch := s[i];
Cosomin:= Pos(ch,H);
End;
Procedure Nhap;
Var i : Byte;
Begin
Repeat
Write('Cho biet co so thu nhat ');
240
Chuyªn Tin 10
{$i-} Readln(c1); {$i+}
Until (Ioresult=0) and (c1>=1) and (c1<=Max);

BEGIN
Repeat
Clrscr;
Nhap;
So := DoiC1_10(n);
Writeln(N,'[cs ',c1,']=',Doi10_C2(so),'[cs ',c2,']');
Write(#10#13,'ESC : Thoat . Phim khac : tiep tuc ');
Until Readkey=#27;
END.
Bài 2 :
Uses Crt;
Var x : Integer;
Function Cong(a,b : String) : String; {Cộng 2 xâu chữ số trong hệ nhị phân }
Var i,p,nho : Byte;
Kq : String;
Begin
nho := 0; kq := '';
For i := 16 downto 1 do
Begin
p := ord(a[i])+ord(b[i])-96 + nho;
nho := p div 2;
kq := char(p mod 2 +48)+ kq;
241
Chuyªn Tin 10
End;
Cong := kq;
End;
Procedure Taonhiphan_soam(x : Integer);
Var k : Byte;
h,p : String;

S[i] := Random(10);
Write(S[i]);
End;
Writeln;
End;
Function Du(S : A) : Byte;
Var p : Byte;
i : Integer;
Begin
p := 0;
For i:=1 to N do p := (p + S[i]) mod 3;
Du := p;
End;
Procedure Divtay(Var S : A) ;
Var du,b : Byte;
i : Integer;
Begin
242
Chuyªn Tin 10
du := 0;
If S[Tro]<3 then inc(tro);
i := 1;
While S[i]=0 do Inc(i);
While i<=N do
Begin
b := S[i] + du*10;
S[i] := b div 3; { Dùng ngay S lưu thương nguyên}
du := b mod 3;
Inc(i);
End;

{$I-} Readln(n1,n2,n3);
Until (Ioresult =0 ) and ( n1>=0) and (n2 >=0 ) and (n3 >=0) ;
g:=n1 xor n2 xor n3;
Writeln(' Trang thai cua 3 so ',n1:4,n2:4,n3:4,' la : ',g);
phu:=g xor n1;
If phu<=n1 then
Begin
Writeln('So thu 1 can giam di mot luong la : ',n1-phu);
n1:=phu;
End
Else
Begin
phu:=g xor n2;
243
Chuyªn Tin 10
If phu<=n2 then
Begin
Writeln('So thu 2 can giam di mot luong la : ',n2-phu);
n2:=phu;
End
Else
Begin
phu:=g xor n3;
If phu<=n3 then
Begin
Writeln('So thu 3 can giam di mot luong la : ',n3-phu);
n3:=phu;
End;
End;
End;

Procedure Nhap;
Var i : Byte;
Begin
Repeat
Write('Nhap so dong soi ');
{$I-} Readln(N); {$I+}
Until (IoResult=0) and(N>=3) and (N<=Max);
For i:=1 to N do
Repeat
244
Chuyªn Tin 10
Write('A[',i:2,'] = ');
{$I-} Readln(A[i]); {$I+}
Until (IoResult=0) and (A[i]>0);
Trangtri;
End;
Function Trangthai : Byte;
Var i : Byte; x : Integer;
Begin
x := A[1];
For i:=2 to N do x := X xor A[i];
Trangthai := x;
End;
Procedure Hien(sq : Integer;d : Byte); {sq : so quan , d : dong }
Var i : Byte;
Begin
Gotoxy(4*d+10,4);Textcolor(12+16);Write(A[d]:4);
Sound(2000);Delay(1000);Nosound;
Dec(A[d],sq);
Gotoxy(4*d+10,4);Textcolor(15);Write(A[d]:4);

Textcolor(15);Gotoxy(24,13);Clreol;Write('Dong : ',d);
Gotoxy(24,14);Clreol;Write('So quan boc : ',sq);
Hien(sq,d);
Writeln;
End;
245
Chuyªn Tin 10
Procedure Maydi;
Begin
G := Trangthai;
If G=0 then Vuvo Else Quiluat;
Delay(1000);
HienMaydi;
End;
Procedure Nguoidi;
Var sq : Integer;
d,i : Byte;
B : Ta;
Begin
Gotoxy(24,18);Textcolor(12);Write('BAN BOC');
Textcolor(15);
Repeat Gotoxy(24,19);Clreol;Write('Dong : ');Readln(d);
Until (IoResult=0) and (d<=N) and (0<A[d]);
Repeat Gotoxy(24,20);Clreol;Write('So quan : ');Readln(sq);
Until (IoResult=0) and (sq>0) and (sq<=A[d]);
Hien(sq,d);
Writeln;
End;
Function Ketthuc : Boolean;
Var i : Byte;

Until ( Readkey=#27);
246
Chuyªn Tin 10
END.
247


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status