{code}
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::changeEvent(QEvent *e)
{
QDialog::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
int Dialog::HaeLuku(int n) //funktio lukujen noutamiseksi kineEdit;stä
{
bool ok;
int x;
if (n == 0)
x = ui->lineEdit->text().toInt(&ok, 2);
else
x = ui->lineEdit_2->text().toInt(&ok, 2);
if (!ok) {
QMessageBox viesti(QMessageBox::Warning, "Virhe",
"Syota binaari luku",
QMessageBox::Ok, this);
viesti.exec();
}
return x;
}
void Dialog::SyotaLuku(int x) //funktio luvun syöttämiseksi lineEdit;iin
{
ui->lineEdit->setText(QString::number(x, 2));
}
void Dialog::on_pushButton_clicked() //tehtävä 23
{
int x = HaeLuku(0) & 0b11111111; //haetaan luku; 8 ensimmäistä bittiä
int z = x & ~0b11000; //nollataan bitit 4 ja 5
SyotaLuku(z & 0b11111111); //syötetään luku; vain 8 ensimmäistä bittiä
}
void Dialog::on_pushButton_2_clicked() //tehtävä 24
{
int x = HaeLuku(0) & 0b11111111; //haetaan luku; 8 ensimmäistä bittiä
int z = x | 0b11000; //laitetaan bitit 4 ja 5 arvoon yksi
SyotaLuku(z & 0b11111111); //syötetään luku; vain 8 ensimmäistä bittiä
}
void Dialog::on_pushButton_3_clicked() //tehtävä 25
{
int x = HaeLuku(0) & 0b11111111; //haetaan luku; 8 ensimmäistä bittiä
int z = x ^ 0b11000; //vaihdetaan bittien 4 ja 5 arvot
SyotaLuku(z & 0b11111111); //syötetään luku; vain 8 ensimmäistä bittiä
}
void Dialog::on_pushButton_4_clicked() //tehtävä 26
{
int x = HaeLuku(0) & 0b1111, //haetaan luku; 4 ensimmäistä bittiä
y = HaeLuku(1) & 0b1111; //haetaan toinen luku; 4 ensimmäistä bittiä
int z = x | (y << 4); //otetaan ensimmäinen luku ja
//lisätään siihen toisen luvun bitit siirrettynä
//neljän bitin verran vasemmalle
//(sama kuin kertoisi luvulla 16)
SyotaLuku(z & 0b11111111); //syötetään luku; vain 8 ensimmäistä bittiä
}
void Dialog::on_pushButton_5_clicked() //tehtävä 27
{
int x = HaeLuku(0) & 0b1111111111111111; //haetaan luku; 16 ensimmäistä bittiä
int z = ((x & 1) << 15) | //otetaan luvun ensimmäinen bitti ja siirretään ne 15 bittiä vasemmalle
((x >> 15) & 1) | //lisätään siihen luvun viimeinen bitti siirrettynä 15 bittiä oikealle
(x & 0b0111111111111110); //lisätään vielä alkuperäinen luku ilman ensimmäistä ja viimeistä bittiä
SyotaLuku(z & 0b1111111111111111); //syötetään luku; vain 8 ensimmäistä bittiä
}
{code} |