comparison test/bitops.d @ 1:c53b6e3fe49a trunk

[svn r5] Initial commit. Most things are very rough.
author lindquist
date Sat, 01 Sep 2007 21:43:27 +0200
parents
children fd32135dca3e
comparison
equal deleted inserted replaced
0:a9e71648e74d 1:c53b6e3fe49a
1 void main()
2 {
3 printf("Bitwise operations test\n");
4 { ushort a = 0xFFF0;
5 ushort b = 0x0FFF;
6 assert((a&b) == 0x0FF0);
7 assert((a|b) == 0xFFFF);
8 assert((a^b) == 0xF00F);
9 }
10 { ubyte a = 0xFF;
11 ulong b = 0xFFFF_FFFF_FFFF_FFF0;
12 assert((a&b) == 0xF0);
13 }
14 { ushort s = 0xFF;
15 assert((s<<1) == s*2);
16 assert((s>>>1) == s/2);
17 }
18 { int s = -10;
19 assert((s>>1) == -5);
20 assert((s>>>1) != -5);
21 }
22
23 { ushort a = 0xFFF0;
24 ushort b = 0x0FFF;
25 auto t = a;
26 t &= b;
27 assert(t == 0x0FF0);
28 t = a;
29 t |= b;
30 assert(t == 0xFFFF);
31 t = a;
32 t ^= b;
33 assert(t == 0xF00F);
34 }
35 { ubyte a = 0xFF;
36 ulong b = 0xFFFF_FFFF_FFFF_FFF0;
37 a &= b;
38 assert(a == 0xF0);
39 }
40 { ushort s = 0xFF;
41 auto t = s;
42 t <<= 1;
43 assert(t == (s*2));
44 t = s;
45 t >>>= 1;
46 assert(t == s/2);
47 }
48 { int s = -10;
49 auto t = s;
50 t >>= 1;
51 assert(t == -5);
52 t = s;
53 t >>>= 1;
54 assert(t != -5);
55 }
56 { struct S
57 {
58 uint i;
59 ulong l;
60 };
61 S s = S(1,4);
62 auto a = s.i | s.l;
63 assert(a == 5);
64 s.i = 0xFFFF_00FF;
65 s.l = 0xFFFF_FFFF_0000_FF00;
66 s.l ^= s.i;
67 assert(s.l == ulong.max);
68 s.i = 0x__FFFF_FF00;
69 s.l = 0xFF00FF_FF00;
70 s.i &= s.l;
71 assert(s.i == 0x00FF_FF00);
72 }
73
74 printf(" SUCCESS\n");
75 }