c언어 배열초기화, 비트연산자

2021. 12. 15. 15:43C

배열 초기화

1차원 

char a[] = "Hello"; // 문자형 동적할당 

int a[] = {1,2,3]; // 정수형 동적할당 

2차원 

int a[3][3] = {{1,},{2,}}; // a[0][0]은 1, a[0][3]은 2, 나머지는 0으로 초기화

#비트 연산자 

 

연산자 설명
& 대응되는 비트가 모두 1일때 1 
| 대응되는 비트 중 하나라도 1이면 1
^ 대응되는 비트가 서로 다르면 1 
~ 비트 반전 
>> 지정값만큼 왼쪽으로 비트 이동
<< 지정값만큼 오른쪽으로 비트 이동 
#include <iostream>
using namespace std;

int main(){
	int a=53; //00110101
    int b=54; //00110110
    cout << "&연산" << a&b << endl; //00110100
    cout << "|연산" << a|b << endl; //00110111
    cout << "^연산" << a^b << endl; //00000011
    cout << "~a연산" << ~a << endl; //11001010
    
    cout << "a오른쪽1칸"<< a<<1 << endl;//00011010
    cout << "a오른쪽2칸"<< a<<2 << endl; //00001101
    cout << "b왼쪽1칸" << b>>1 << endl; //01101100
    cout << "b왼쪽2칸" << b>>2 << endl; //11011000
    
    return 0;
   }
   
   &연산 52
   |연산 55
   ^연산 3
   ~a연산 -54
  a오른쪽 1칸 106
  a오른쪽 2칸 212
  b왼쪽 1칸 27
  b왼쪽 2칸 13

쉬프트 연산으로 곱셈, 나눗셈이 가능하다.

쉬프트 연산의 곱셈 나눗셈과 산술 연산자의 곱셈 나눗셈의 차이점은 속도임.

코드의 가독성을 위해 보통 일반 연산자를 사용하지만 속도를 고집해야 한다면 쉬프트 연산을 사용할 수 있다.

한가지 단점은 쉬프트 연산은 2의 배수만 계산할 수 있다는 점이다.

이 경우 덧셈과 뺄셈을 잘 혼합하면 홀수 연산도 가능함.

3배 a<<1+a
5배 a<<2+a