วันอังคารที่ 10 เมษายน พ.ศ. 2561

Right Shift Bitwise Operators เครื่องหมายดำเนินการทางบิท เลื่อนไปทางขวา เลื่อนซ้ายคูณ2 เลื่อนขวาหาร2










Right Shift Bitwise Operators เครื่องหมายดำเนินการทางบิท เลื่อนไปทางขวา เลื่อนซ้ายคูณ2 เลื่อนขวาหาร2
10/4/2561 SONGCHAI PRAPATRUNGSEE
Right Shift Bitwise Operators เครื่องหมายดำเนินการทางบิท เลื่อนไปทางขวา เลื่อนซ้ายคูณ2 เลื่อนขวาหาร2

เครื่องหมายดำเนินการทางบิท >> (Right Shift) กำหนด x=12 (1100), y=3 (0011)
เครื่องหมาย
การทำงาน
ตัวอย่าง

   >>
Right Shift
x >> y = 1
12 >> y = 1
1 >> y = 0


x << y = 96
12 << y = 96
1 << y = 8

เลื่อนไปทางขวา
ถ้าเลื่อนขวา1บิท หาร2
ถ้าเลื่อนขวา2บิท หาร4
ถ้าเลื่อนขวา3บิท หาร8

ถ้าเลื่อนซ้าย1บิท คูณ2
ถ้าเลื่อนซ้าย2บิท คูณ4
ถ้าเลื่อนซ้าย3บิท คูณ8

x = 12;        // binary: 00001100
y = 3;        // binary: 00000011
z = x >> y;  // binary: 00000001
z = 12 >> y;  // binary: 00000001
z = 1 >> y;  // binary: 00000000
/////////////////////////////////////////////////////////////////////
<< 
[Bitwise Operators]
Description
The left shift operator << causes the bits of the left operand to be shifted left by the number of positions specified by the right operand.

Syntax
variable << number_of_bits;
Parameters
variable: Allowed data types: byte, int, long
number_of_bits: a number that is < = 32. Allowed data types: int

Example Code
int a = 5;        // binary: 0000000000000101
int b = a << 3;   // binary: 0000000000101000, or 40 in decimal
Notes and Warnings
When you shift a value x by y bits (x << y), the leftmost y bits in x are lost, literally shifted out of existence:

int x = 5;        // binary: 0000000000000101
int y = 14;
int result = x << y;  // binary: 0100000000000000 - the first 1 in 101 was discarded
If you are certain that none of the ones in a value are being shifted into oblivion, a simple way to think of the left-shift operator is that it multiplies the left operand by 2 raised to the right operand power. For example, to generate powers of 2, the following expressions can be employed:

   Operation  Result
   ---------  ------
    1 <<  0      1
    1 <<  1      2
    1 <<  2      4
    1 <<  3      8
    ...
    1 <<  8    256
    1 <<  9    512
    1 << 10   1024
    ...
The following example can be used to print out the value of a received byte to the serial monitor, using the left shift operator to move along the byte from bottom(LSB) to top (MSB), and print out its Binary value:

// Prints out Binary value (1 or 0) of byte
void printOut1(int c) {
  for (int bits = 7; bits > -1; bits--) {
    // Compare bits 7-0 in byte
    if (c & (1 << bits)) {
      Serial.print ("1");
    }
    else {
      Serial.print ("0");
    }
  }
}
///////////////////////////////////////////////////////////////////////////
/* 10/4/2561
>> Right shift Bitwise Operators
 */

#include <REGX51.H> //REGISTER 51 Header file

void main(void)
{
unsigned char x=12,y=3,z;
while (1)
{
        z = x >> y ;//00000001
}
}




ไม่มีความคิดเห็น: