이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
bitshift
지정된 개수의 위치만큼 비트 시프트
설명
는 intout
= bitshift(A
,k
)k
비트만큼 왼쪽으로 시프트된 A
를 반환합니다. 이는 2k
를 곱하는 것과 같습니다. 음의 k
값은 비트를 오른쪽으로 시프트하거나, 2|k|
로 나누어 음의 무한대에 가장 가까운 정수로 반올림하는 것과 같습니다. 오버플로 비트는 잘립니다.
A
가 부호 있는 정수로 구성된 배열이면bitshift
는 산술 시프트 결과를 반환하며,k
가 음수일 경우 부호 있는 비트를 보존하고k
가 양수일 경우 부호 있는 비트를 보존하지 않습니다.k
가 양수이면 MATLAB®에서는 비트를 왼쪽으로 시프트하고 오른쪽에 0 비트를k
개 삽입합니다.k
가 음수이고A
가 음수가 아니면 MATLAB에서는 비트를 오른쪽으로 시프트하고 왼쪽에 0비트를|
k
|
개 삽입합니다.k
가 음수이고A
가 음수이면 MATLAB에서는 비트를 오른쪽으로 시프트하고 왼쪽에 1비트를|
k
|
개 삽입합니다.
는 intout
= bitshift(A
,k
,assumedtype
)A
의 유형이 assumedtype
인 것으로 가정합니다.
예제
시프트된 8비트 정수
0이 아닌 모든 비트가 오버플로할 때까지 부호 없는 8비트 값의 비트를 반복해서 왼쪽으로 시프트합니다.
a = intmax('uint8'); s1 = 'Initial uint8 value %5d is %08s in binary\n'; s2 = 'Shifted uint8 value %5d is %08s in binary\n'; fprintf(s1,a,dec2bin(a))
Initial uint8 value 255 is 11111111 in binary
for i = 1:8 a = bitshift(a,1); fprintf(s2,a,dec2bin(a)) end
Shifted uint8 value 254 is 11111110 in binary Shifted uint8 value 252 is 11111100 in binary Shifted uint8 value 248 is 11111000 in binary Shifted uint8 value 240 is 11110000 in binary Shifted uint8 value 224 is 11100000 in binary Shifted uint8 value 192 is 11000000 in binary Shifted uint8 value 128 is 10000000 in binary Shifted uint8 value 0 is 00000000 in binary
여러 정수형의 다양한 결과
여러 가정 정수형을 사용하여 숫자의 시프트를 구합니다.
uintout = bitshift(6,5:7,'uint8')
uintout = 1×3
192 128 0
intout = bitshift(6,5:7,'int8')
intout = 1×3
-64 -128 0
바이트를 부호 없는 32비트 정수로 결합하기
bitor
과 bitshift
를 사용하여 4개의 8비트 바이트를 이들이 구성하는 32비트 정수로 결합합니다.
4개의 데이터 바이트를 만듭니다. 16진수 리터럴을 사용하여 데이터를 지정합니다. 이때 데이터를 uint32
로 저장해야 함을 지정하기 위해 -u32
접미사를 사용합니다. 각 바이트는 8비트에 해당하는 데이터를 포함합니다.
byte4 = 0x87u32; byte3 = 0x65u32; byte2 = 0x43u32; byte1 = 0x21u32;
먼저 첫 번째 바이트를 부호 없는 32비트 정수의 첫 번째 8비트로 추가합니다.
packedNum = byte1;
다음으로, 나머지 3개의 바이트를 packedNum
에 결합합니다. 이때 bitshift
를 사용하여 바이트를 올바른 위치로 시프트하고, bitor
을 사용하여 비트를 복사합니다.
packedNum = bitor(packedNum,bitshift(byte2,8)); packedNum = bitor(packedNum,bitshift(byte3,8*2)); packedNum = bitor(packedNum,bitshift(byte4,8*3));
결합된 32비트 정수를 확인합니다.
format hex
packedNum
packedNum = uint32
87654321
입력 인수
A
— 입력값
배열
입력값으로, 배열로 지정됩니다. A
는 k
와 동일한 크기의 스칼라이거나 배열일 수 있습니다.
A
가 double형 배열이고assumedtype
이 지정되지 않은 경우 MATLAB에서는A
를 부호 없는 64비트 정수로 처리합니다.assumedtype
이 지정된 경우A
의 모든 요소는assumedtype
범위 내의 정수 값을 가져야 합니다.
데이터형: double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
k
— 시프트할 비트 수
정수 | 정수형 배열
시프트할 비트 수로, 정수 또는 정수형 배열로 지정됩니다. k
는 A
와 동일한 크기의 스칼라이거나 배열일 수 있습니다.
데이터형: double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
assumedtype
— A
의 가정 데이터형
'uint64'
| 'uint32'
| 'uint16'
| 'uint8'
| 'int64'
| 'int32'
| 'int16'
| 'int8'
A
의 가정 데이터형으로, 'uint64'
, 'uint32'
, 'uint16'
, 'uint8'
, 'int64'
, 'int32'
, 'int16'
, 'int8'
중 하나로 지정됩니다.
A
가 정수형 배열이면assumedtype
에 동일한 정수형이 지정되어야 합니다.A
가 double형 배열이면assumedtype
에 모든 유효한 정수형을 지정할 수 있습니다.
데이터형: char
| string
출력 인수
intout
— 시프트된 값
배열
시프트된 값으로, 배열로 반환됩니다. intout
은 A
와 데이터형이 같습니다.
A
와k
가 스칼라이면intout
도 스칼라입니다.A
와k
중 하나가 배열이면intout
은 그 배열과 크기가 같습니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
HDL 코드 생성
HDL Coder™를 사용하여 FPGA 및 ASIC 설계를 위한 VHDL, Verilog 및 SystemVerilog 코드를 생성할 수 있습니다.
효율적인 HDL 코드 생성을 위해 bitshift
대신 Fixed-Point Designer™ 함수 bitsll
, bitsrl
또는 bitsra
를 사용하십시오.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
입력값
A
또는k
중 적어도 하나는 정수형 배열이어야 합니다.입력값
A
는 부호 있는 정수형 배열일 수 없습니다.64비트 정수는 지원되지 않습니다.
assumedtype
인수는 지원되지 않습니다.
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)