30/09/2018, 18:20

Hỏi về cách tính các toán tử trong c?

m.n cho e hỏi thầy e có cho hai bài tập này nhưng e không hiểu lắm. nhập vào 2 số nguyên x,y tính: là sao hả m.n cộng trừ nhân chia thì biết chứ cái này bó tay rồi…

 (x << 2) + ( y>>2 )
 (x | y) – (x & y)
Dương Nylghara viết 20:30 ngày 30/09/2018

Cái này để mình ví dụ là bạn hiểu
Ví dụ
Khi nhập

x = 5 thì 5 nó đc biết diễn dưới dạng bit là : 101
như đề bài x << 2 có nghĩa là dịch qua trái 2 bit => 10100 <=> x =20

tương tự

y = 10 thì 10 nó đc biết diễn dưới dạng bit là : 1010
như đề bài y >> 2 có nghĩa là dịch qua phải 2 bit => 10 <=> 2

Kết Luận
nếu kiểu của nó là số nguyên

(x << 2) + ( y>>2 ) = 20 + 2 = 22

nếu là ở dạng bit thì có dạng là

10100 + 00010 = 10110
Dương Nylghara viết 20:23 ngày 30/09/2018

Code: câu 1

#include <iostream>
#include<bitset>

using namespace std;

int main()
{
    int x, y;
    cout << "\nNhap vao x: "<<endl;
    cin>>x;
    cout<<"\nNhap vao y: "<<endl;
    cin>>y;

    int ketQua = ( x<<2 ) + ( y >> 2);
    cout<<"\nKet qua duoi dang so nguyen la : "<<ketQua;
    cout<<"\nKet qua duoi dang so nhi phan la : "<<bitset<6>(ketQua)<<endl;
    return 0;
}
Dương Nylghara viết 20:21 ngày 30/09/2018

Câu 2
Toán tử | (toán tử Or ) : nghĩa là chỉ cần một cái đúng thì cả hai cũng đúng
Ví dụ :
cho x = 5, y = 12
Ta có:
(x | y) = 5 | 12 được biểu diễn như sau :

0101   <=>  5
1100   <=> 12
--------
1101   <=> 13

=> (x | y) = 13

Tiếp tục
Toán tử (&) : nghĩa là đúng khi cả hai cùng đúng

(x & y) = 5 & 13 được biểu diễn như sau:

0101   <=> 5
1100  <=> 13
-------
0100   <=>  4

     (x | y) – (x & y) 
<=> ( 5 | 12) - ( 5 & 13) =13 - 4 = 9
Dương Nylghara viết 20:32 ngày 30/09/2018

Code câu 2:

#include <iostream>
#include<bitset>

using namespace std;

int main()
{
    int x, y;
    cout << "\nNhap vao x: "<<endl;
    cin>>x;
    cout<<"\nNhap vao y: "<<endl;
    cin>>y;

    int ketQua = ( x| y ) - ( x & y);
    cout<<"\nKet qua duoi dang so nguyen la : "<<ketQua;
    cout<<"\nKet qua duoi dang so nhi phan la : "<<bitset<6>(ketQua)<<endl;
    return 0;
}
Long Long viết 20:28 ngày 30/09/2018

công phu quá. hơi ngơ ngơ 1 xíu kk. cảm ơn bạn nka

Bài liên quan
0