Автор работы: Пользователь скрыл имя, 27 Ноября 2012 в 13:53, реферат
Задание 1. Выполнить арифметические действия, рассматривая операнды как ЧФЗ справа от МЗР в формате 1-го байта. Определить модуль результата. Формат результата – 2 байта.
Выполним операцию сложения Z = X+Y = 15(10) + 33(10) = 48(10).
X = 15(10) = 0000 1111(2);
Y = 33(10) = 0010 0001(2).
(листинг программы)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) //10->2
{
textBox2.Clear();
if (textBox1.Text.ToString().
{
double x;
int whole;
float fract;
Stack<int> stack = new Stack<int>();
try
{
x = Convert.ToDouble(
textBox1.Text.ToString().
if (x < 0)
{
textBox2.AppendText("-");
x = Math.Abs(x);
}
whole = (int)x;
fract = (float)(x - Math.Truncate(x));
//////////////////////////////
while (whole > 1)
{
stack.Push(whole % 2);
whole /= 2;
}
stack.Push(whole);
//////////////////////////////
while (stack.Count != 0)
textBox2.AppendText(stack.Pop(
//////////////////////////////
if ((float)(fract - Math.Truncate(fract)) != 0)
textBox2.AppendText(".");
//////////////////////////////
while ((float)(fract - Math.Truncate(fract)) != 0) //пока дробная часть не будет равна 0
{
fract = (float)(fract - Math.Truncate(fract)) * 2; //умножаем дробную часть на 2
textBox2.AppendText(((int)
}
//////////////////////////////
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString())
}
}
}
private void button2_Click(object sender, EventArgs e) //2->10
{
textBox1.Clear();
if (textBox2.Text.ToString().
{
string str;
str = textBox2.Text.ToString();
str = str.Replace(" ", string.Empty);
if (str.Length != 0 && str[0] == '-')
{
str = str.Replace("-", string.Empty);
textBox1.AppendText("-");
}
double temp = 0;
int i = 0;
if (str.Length != 0)
{
if (str.LastIndexOf(".") >= 0)
{
for (int j = str.LastIndexOf(".") - 1; j >= 0; j--) //от точки до начала строки (справа налево) конвертим целую часть
{
temp += Convert.ToDouble(str[j].
i++;
}
i = -1;
for (int j = str.LastIndexOf(".") + 1; j < str.Length; j++) //от точки до конца строки
{
temp += Convert.ToDouble(str[j].
i--;
}
}
else
{
for (int j = str.Length - 1; j >= 0; j--) //справа налево по строке
{
temp += Convert.ToDouble(str[j].
i++;
}
}
textBox1.AppendText(temp.
}
}
}
private void textBox2_KeyDown(object sender, KeyEventArgs e) //обработка нажатия enter во втором текстбоксе
{
if (e.KeyCode == Keys.Enter)
{
button2_Click(sender, e);
}
}
private void textBox1_KeyDown(object sender, KeyEventArgs e) //обработка нажатия enter в первом текстбоксе
{
if (e.KeyCode == Keys.Enter)
{
button1_Click(sender, e);
}
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) //не пускаем буквы и прочее ненужное
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) &&
e.KeyChar != '-')
{
if (e.KeyChar != '.' || textBox1.Text.IndexOf(".") != -1) //и если не точка (или вторая точка)
{
e.Handled = true;
}
}
}
private void textBox2_KeyPress(object sender, KeyPressEventArgs e) //не пускаем буквы и прочее ненужное
{
if (char.ToString(e.KeyChar) != "1" && char.ToString(e.KeyChar) != "0"
&& !Char.IsControl(e.KeyChar) && e.KeyChar != '-') //если не 0, 1, управляющая клавиша, не минус
{
if (e.KeyChar != '.' || textBox2.Text.IndexOf(".") != -1) //и если не точка (или вторая точка)
{
e.Handled = true;
}
}
}
private void button1_MouseEnter(object sender, EventArgs e) //при наведении мыши на кнопку1
{
button1.Image = (System.Drawing.Image)
button1.Refresh();
}
private void button1_MouseLeave(object sender, EventArgs e) //мышь покинула кнопку1
{
button1.Image = (System.Drawing.Image)
button1.Refresh();
}
private void button2_MouseEnter(object sender, EventArgs e) //при наведении мыши на кнопку2
{
button2.Image = (System.Drawing.Image)
button2.Refresh();
}
private void button2_MouseLeave(object sender, EventArgs e) //мышь покинула кнопку2
{
button2.Image = (System.Drawing.Image)
button2.Refresh();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void label1_Click(object sender, EventArgs e)
{
}
}
}