이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
비트 연산
이 예제는 Simulink® 블록, Stateflow® 차트 및 MATLAB® 함수 블록을 사용하여 비트 단위 연산을 구현하는 방법을 보여줍니다.
Simulink Bitwise Operator 블록
모델에 논리 연산을 포함하려면 논리 및 비트 연산 라이브러리의 Bitwise Operator 블록을 사용하십시오.
1. 예제 모델 ex_bit_logic_SL을 엽니다.

Logical Operator 블록은 모델 내에서 AND 연산을 수행합니다. 연산자를 변경하려면 블록을 더블 클릭한 다음, 연산자 필드를 메뉴에 있는 연산자 중 하나로 설정하십시오.
2. 블록을 더블 클릭하면 ‘블록 파라미터’ 대화 상자가 열립니다.
3. 비트 마스크를 사용하여 비트 단위 연산을 수행하려면 비트 마스크 사용을 선택하십시오.
다른 입력에서 비트 단위 연산을 사용하는 경우, 비트 마스크 사용 파라미터의 선택을 해제하고 입력 포트 수를 입력하십시오.
4. 비트 마스크 필드에 10진수를 입력하십시오. 이진수나 16진수로 입력된 값을 변환하려면 bin2dec 또는 hex2dec를 사용하십시오. 이 예제에서는 hex2dec('D9')를 입력합니다.
5. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.
비트별 AND 연산자를 구현하는 코드는 ex_bit_logic_SL.c 파일 내의 ex_bit_logic_SL_step 함수에 있습니다:
/* Exported block signals */
uint8_T u1; /* '<Root>/u1' */
uint8_T y1; /* '<Root>/Bitwise Operator' */
/* Model step function */
void ex_bit_logic_SL_step(void)
{
/* S-Function (sfix_bitop): '<Root>/Bitwise Operator' incorporates:
* Inport: '<Root>/u1'
*/
y1 = (uint8_T)(u1 & 217);
}
Stateflow 차트
1. 예제 모델 ex_bit_logic_SF를 엽니다.

2. Stateflow 차트를 마우스 오른쪽 버튼으로 클릭한 다음, [속성] 버튼을 클릭합니다.
3. C-비트 작업 사용 체크박스가 선택되어 있는지 확인하십시오.
4. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.
비트별 AND 연산자를 구현하는 코드는 ex_bit_logic_SF.c 파일 내의 ex_bit_logic_SF_step 함수에 있습니다:
/* Exported block signals */
uint8_T u1; /* '<Root>/u1' */
uint8_T y1; /* '<Root>/Bit_Logic' */
/* Model step function */
void ex_bit_logic_SF_step(void)
{
/* Chart: '<Root>/Bit_Logic' incorporates:
* Inport: '<Root>/u1'
*/
y1 = (uint8_T)(u1 & (uint32_T)0xD9);
}
MATLAB Function 블록
이 예제에서는 생성된 코드에 비트 단위 논리를 구현하는 MATLAB 함수 블록 메서드를 보여주기 위해, 비트 연산자 OR, 즉 '|'를 사용합니다.
1. 예제 모델 ex_bit_logic_ML을 엽니다.

2. MATLAB 함수 블록에는 이 함수가 포함되어 있습니다:
function y1 = fcn(u1, u2) %#eml y1 = bitor(u1, u2); end
3. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.
비트별 OR 연산자를 구현하는 코드는 ex_bit_logic_ML.c 파일 내의 ex_bit_logic_ML_step 함수에 있습니다:
/* Exported block signals */
uint8_T u1; /* '<Root>/u1' */
uint8_T u2; /* '<Root>/u2' */
uint8_T y1; /* '<Root>/Bitwise OR' */
/* Model step function */
void ex_bit_logic_ML_step(void)
{
/* MATLAB Function: '<Root>/Bitwise OR' incorporates:
* Inport: '<Root>/u1'
* Inport: '<Root>/u2'
*/
y1 = (uint8_T)(u1 | u2);
}