<< Оператор Побитовый сдвиг влево (Bitwise Left Shift) (arcpy.sa)
Резюме
Выполняет побитовую операцию смещения влево для бинарных значений двух входных растров.
Рисунок
Обсуждение
При использовании оператора с растровым входом результат будет растром. Но если все входные значения — числа, результат будет числом.
Если в выражении используется несколько операторов, они не обязательно выполняются слева направо. Оператор с высшим значением приоритета будет выполнен первым. Более подробно о приоритете операторов см. в таблице приоритета операторов. Порядок выполнения можно изменить с помощью скобок.
Побитовые операторы работают с 32-разрядными целыми числами.
При вводе значений с плавающей запятой они конвертируются в целочисленные значения посредством сокращения знаков перед выполнением битовой операции. Выходные значения всегда целочисленные.
Для выполнения битовой операции требуется ввести два исходных значения (растры или числа).
При выполнении операции побитового сдвига влево имеет значение порядок ввода.
Бинарные значения хранятся в виде поразрядного дополнения до двух.
Самая левая битовая позиция зарезервирована для знака значения (положительное или отрицательное). Если целое число положительное, бит имеет значение 0, а если отрицательное – бит имеет значение 1.
Побитовая операция смещения слева не выполняет свертывания бит (wrapping of bits). Крайний левый бит отбрасывается.
Также операцию побитового сдвига влево можно выполнять a <<= b, что является альтернативным способом написания a = a << b.
Синтаксис
Операнд | Объяснение | Тип данных |
in_raster_or_constant1 | Входной растр, для которого будет выполнен сдвиг. Входными данными могут быть целые числа или значения с плавающей точкой, но значения с плавающей точкой преобразуются в целые числа до выполнения побитовой операции. Если первое введенное значение является растром, а второе – скаляром, с каждым входным растровым значением создается выходное растровое значение с побитовым сдвигом влево на значение скаляра. | Raster Layer | Constant |
in_raster_or_constant2 |
Входное растровое значение, определяющее, на сколько позиций сдвигаются биты. Входными данными могут быть целые числа или значения с плавающей точкой, но значения с плавающей точкой преобразуются в целые числа до выполнения побитовой операции. Если первое входное значение является скаляром, а второе – растром, создается создается выходное растровое значение, для которого каждое входное растровое значение определяет побитовый сдвиг влево для значения скаляра. | Raster Layer | Constant |
Возвращено значение
Имя | Объяснение | Тип данных |
out_raster |
Объект выходного растра. Значения ячеек являются результатом побитовой операции «Left Shift» на входных данных. | Raster |
Пример кода
В этом примере операция побитового сдвига влево выполняется с двумя входными растрами.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outBitwiseLS = Raster("degs") << Raster("negs")
outBitwiseLS.save("C:/sapyexamples/output/outbitls.tif")
В этом примере операция побитового сдвига влево выполняется с двумя входными растрами.
# Name: Op_BitwiseLeftShift_Ex_02.py
# Description: Performs a Bitwise Left Shift operation on the binary
# values of two input rasters
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster1 = Raster("degs")
inRaster2 = Raster("negs")
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute BitwiseLeftShift
outBitwiseLShift = inRaster1 << inRaster2
# Save the output
outBitwiseLShift.save("C:/sapyexamples/output/outlshift")