[位運算符]
說明
右移運算符>>
使左操作數的位右移右操作數指定的位置數。
用法
variable >> number_of_bits;
參數
variable
:允許的數據類型:byte
,int
,long
.
number_of_bits
: < = 32 的數字。允許的數據類型:int
.
示例代碼
int a = 40; // binary: 0000000000101000
int b = a >> 3; // binary: 0000000000000101, or 5 in decimal
注意事項和警告
當您將 x 右移 y 位 (x >> y) 並且 x 中的最高位為 1 時,行為取決於 x 的確切數據類型。如果 x 是 int 類型,則最高位是符號位,確定 x 是否為負,正如我們上麵所討論的。在這種情況下,出於深奧的曆史原因,符號位被複製到低位:
int x = -16; // binary: 1111111111110000
int y = 3;
int result = x >> y; // binary: 1111111111111110
這種稱為符號擴展的行為通常不是您想要的行為。相反,您可能希望零從左側移入。事實證明,無符號 int 表達式的右移規則是不同的,因此您可以使用類型轉換來抑製從左側複製的內容:
int x = -16; // binary: 1111111111110000
int y = 3;
int result = (unsigned int)x >> y; // binary: 0001111111111110
如果您小心避免符號擴展,您可以使用 right-shift 運算符 >>
作為除以 2 的冪的方法。例如:
int x = 1000;
int y = x >> 3; // integer division of 1000 by 8, causing y = 125.
相關用法
- Arduino >=用法及代碼示例
- Arduino >用法及代碼示例
- Arduino long用法及代碼示例
- Arduino Arduino_EMBRYO_2 - setLengthXY()用法及代碼示例
- Arduino ~用法及代碼示例
- Arduino ArduinoBLE - bleDevice.advertisedServiceUuidCount()用法及代碼示例
- Arduino const用法及代碼示例
- Arduino Ethernet - server.begin()用法及代碼示例
- Arduino ArduinoBLE - BLEService()用法及代碼示例
- Arduino digitalWrite()用法及代碼示例
- Arduino ArduinoBLE - bleCharacteristic.subscribe()用法及代碼示例
- Arduino Servo - attach()用法及代碼示例
- Arduino write()用法及代碼示例
- Arduino Arduino_LSM9DS1 - readGyroscope()用法及代碼示例
- Arduino ArduinoSound - FFTAnalyzer.input()用法及代碼示例
- Arduino MKRGSM - gprs.attachGPRS()用法及代碼示例
- Arduino WiFiNINA - WiFi.config()用法及代碼示例
- Arduino MKRGSM - sms.read()用法及代碼示例
- Arduino MKRNB - getCurrentCarrier()用法及代碼示例
- Arduino Scheduler - Scheduler.startLoop()用法及代碼示例
- Arduino Arduino_LSM9DS1 - magneticFieldAvailable()用法及代碼示例
- Arduino MKRWAN - available()用法及代碼示例
- Arduino ArduinoBLE - BLE.poll()用法及代碼示例
- Arduino ArduinoBLE - bleCharacteristic.hasDescriptor()用法及代碼示例
- Arduino Ethernet - EthernetUDP.parsePacket()用法及代碼示例
注:本文由純淨天空篩選整理自arduino.cc大神的英文原創作品 >>。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。