Добавить в цитаты Настройки чтения

Страница 132 из 502

Ниже полностью приводится класс Nybble, а также класс NybbleDemo, демонстрирующий его применение.

<b>// Создать полубайтовый тип 4-разрядных данных </b>

<b>//под названием Nybble.</b>

<b>using System;</b>

<b>// тип4-разрядных данных.</b>

<b>class Nybble {</b>

<b>  int val; // базовый тип для хранения данных</b>

<b>  public Nybble() { val = 0; }</b>

<b>  public Nybble(int i) {</b>

<b>    val = i;</b>

<b>    val = val &amp; 0xF; // сохранить 4 младших разряда</b>

<b>  }</b>

<b>  // Перегрузить бинарный оператор + </b>

<b>    //для сложения двух объектов типа Nybble, </b>

<b>  public static Nybble operator +(Nybble op1, Nybble op2) {</b>

<b>    Nybble result = new Nybble();</b>

<b>    result.val = op1.val + op2.val;</b>

<b>    result.val = result.val &amp; 0xF; // сохранить 4 младших разряда </b>

<b>    return result;</b>

<b>  }</b>

<b>  // Перегрузить бинарный оператор + для сложения</b>

<b>  // объекта типа Nybble и значения типа int.</b>

<b>  public static Nybble operator +(Nybble op1, int op2) {</b>

<b>    Nybble result = new Nybble();</b>

<b>    result.val = op1.val + op2;</b>

<b>    result.val = result.val &amp; 0xF; // сохранить 4 младших разряда</b>

<b>    return result;</b>

<b>  }</b>

<b>  // Перегрузить бинарный оператор + для сложения </b>

<b>  // значения типа int и объекта типа Nybble, </b>

<b>  public static Nybble operator +(int op1, Nybble op2) {</b>

<b>    Nybble result = new Nybble();</b>

<b>    result.val = op1 + op2.val;</b>

<b>    result.val = result.val &amp; 0xF; // сохранить 4 младших разряда</b>

<b>    return result;</b>

<b>  }</b>

<b>  // Перегрузить оператор ++.</b>

<b>  public static Nybble operator ++(Nybble op) {</b>

<b>    Nybble result = new Nybble();</b>

<b>    result.val = op.val + 1;</b>

<b>    result.val = result.val &amp; 0xF; // сохранить 4 младших разряда</b>

<b>    return result;</b>

<b>  }</b>

<b>  // Перегрузить оператор &gt;.</b>

<b>  public static bool operator &gt;(Nybble op1, Nybble op2) {</b>

<b>    if (op1.val &gt; op2.val) return true;</b>

<b>    else return false;</b>

<b>  }</b>

<b>  // Перегрузить оператор &lt;.</b>

<b>  public static bool operator &lt;(Nybble op1, Nybble op2) {</b>

<b>    if (op1.val &lt; op2.val) return true; else return false;</b>

<b>  }</b>

<b>  // Преобразовать тип Nybble в тип int. </b>

<b>  public static implicit operator int(Nybble op) {</b>

<b>    return op.val;</b>

<b>  }</b>

<b>  // Преобразовать тип int в тип Nybble, </b>

<b>  public static implicit operator Nybble(int op) {</b>

<b>    return new Nybble(op);</b>

<b>  }</b>

<b>}</b>

<b>class NybbleDemo {</b>

<b>  static void Main() {</b>

<b>    Nybble a = new Nybble(1);</b>

<b>    Nybble b = new Nybble(10);</b>

<b>    Nybble с = new Nybble();</b>

<b>    int t;</b>

<b>    Console.WriteLine(&quot;a: &quot; + (int)a);</b>

<b>    Console.WriteLine(&quot;b: &quot; + (int)b);</b>

<b>    if (a &lt; b) Console.WriteLine(&quot;а меньше b&quot;);</b>

<b>    // Сложить два объекта типа Nybble. </b>

<b>    с = a + b;</b>

<b>    Console.WriteLine(&quot;с после операции с = а + b: &quot; + (int)с);</b>

<b>    // Сложить значение типа int с объектом типа Nybble, </b>