Left Shift Bitwise Operators เครื่องหมายดำเนินการทางบิท เลื่อนไปทางซ้าย
หรือตัวหลังเป็นตำแหน่งบิท ตัวหน้าเป็นค่า
3/4/2561
SONGCHAI PRAPATRUNGSEE
Left Shift Bitwise Operators เครื่องหมายดำเนินการทางบิท เลื่อนไปทางซ้าย
หรือตัวหลังเป็นตำแหน่งบิท ตัวหน้าเป็นค่า
เครื่องหมายดำเนินการทางบิท
<< (Left
Shift) กำหนด x=6 (0110), y=3 (0011)
เครื่องหมาย
|
การทำงาน
|
ตัวอย่าง
|
|
<<
|
Left Shift
|
x << y = 48
6 << y = 48
1 << y = 8
|
เลื่อนไปทางซ้าย
หรือคิดแบบง่ายๆ
ตัวหลังเป็นตำแหน่งบิท
ตัวหน้าเป็นค่า
|
x = 6; // binary: 00000110
y = 3; // binary: 00000011
z = x << y; // binary: 00110000
z = 6 << y; // binary: 00110000
z = 1 <<
y; // binary: 00001000
/////////////////////////////////////////////////////////////////////
<<
[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");
}
}
}
///////////////////////////////////////////////////////////////////////////
/* 3/4/2561
<< Left Shift Bitwise Operators
*/
#include <REGX51.H>
//REGISTER 51 Header file
void main(void)
{
unsigned char x=6,y=3,z;
while (1)
{
z
= x << y ;//00000110
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น