'연산자'에 해당되는 글 4건

Programming/.NET

비트 단위의 데이터연산시 사용합니다. 예를 들어 정수 10은 비트값으로 아래와 같습니다.

 

00000000 00001010

 

참고로 32나 64비트에 따라 자리수만큼 표시되어야 하지만 간소화를 위해 16비트로 표시하였습니다.

 

시프트연산자는 이 비트를 오른쪽으로 혹은 왼쪽으로 0을 채워 밀어주는 역활을 수행 합니다.

 

int i = 10;

int leftShift = i << 3;
int rightShift = i >> 3;

Console.WriteLine("Result : {0} | {1}", leftShift, rightShift);

 

<< 표시는 왼쪽 시프트연산자이며 >> 표시는 오른쪽 시프트연산자입니다. 이 연산자에 따라 10 (1010)을 왼쪽으로 3개의 비트를 밀면

 

00000000 01010000

 

이 되고 이 비트를 10진수 정수로 변환하면 80이 됩니다. 반면 오른쪽으로 3개비트를 밀게되면

 

00000000 00000001

 

이 되어 결과는 1이 됩니다.

 

이 연산방식은 왼쪽시프트는 1비트씩 움직일때 마다 2를 곱한것과 같고 오른쪽 시프트는 2로 나눈것과 같은 값이 됩니다.

'Programming > .NET' 카테고리의 다른 글

[C#] params  (0) 2019.03.19
[C#] HttpWebRequest / HttpWebResponse / WebClient  (0) 2019.03.12
[C#] 시프트(Shift) 연산자  (0) 2019.03.05
[C#] 예외처리(try ~ catch)  (0) 2019.02.19
[C#] ? / Nullable  (0) 2019.02.12
[C#] partial  (0) 2019.02.07
0 0
Programming/.NET

비트 단위의 논리 연산을 수행합니다.

 

int i = 10;

int bit_and = i & 3;
int bit_or = i | 3;
int bit_xor = i ^ 3;
int bit_not = ~i;

Console.WriteLine("Result : {0} | {1}", bit_xor, bit_not);

 

& 는 and 연산으로서 같은 값인것만 1로 처리합니다. 그래서 10의 값이 1010과 3의 값인 0011을 연산하면

 

1010
0011
----
0010

 

이 되어 결과는 3이 됩니다.

 

| 는 or 연산입니다. 따라서 둘중 어느 하나라도 1이 있으면 결과는 1이 됩니다.

 

1010
0011
----
1011

 

^ 는 Xor 연산으로 둘의 값이 1이든 0이든 서로 틀려야만 1이 됩니다.

 

1010
0011
----
1001

 

마지막으로 ~는 보수입니다. 피연산자의 모든 값을 반대로 뒤집습니다.

 

1010
----
0101

 

다만 이 경우 부호를 나타내는 최상위 비트도 반대로 처리하기 때문에 결과는 -값이 됩니다.

'Programming > .NET' 카테고리의 다른 글

[ASP.NET MVC] Razor  (0) 2019.01.08
[ASP.NET MVC] URL 다루기  (0) 2018.12.18
[C#] 비트(bit) 연산자  (0) 2018.11.20
[ASP.NET MVC] 액션 메서드(Action Method)  (0) 2018.11.13
[C#] Thread  (0) 2018.11.06
[C#] MemoryStream / StreamWriter / StreamReader / BinaryWriter / BinaryReader  (0) 2018.10.31
0 0
Programming/.NET

null 조건을 처리할 수 있는 연산자로 ?? 가 있습니다.

 

예를 들어 아래와 같은 코드는

 

string s = null;

if (s == null)
    Console.WriteLine("NULL");

 

다음과 같이 수정될 수 있습니다.

 

string s = null;
Console.WriteLine(s ?? "NULL");

'Programming > .NET' 카테고리의 다른 글

[C#] String  (0) 2017.08.22
[C#] 확장 메서드(Extension Method) - 2  (0) 2017.08.16
[C#] ?? 연산자  (0) 2017.08.10
[C#] 형변환(캐스팅 - Casting)  (0) 2017.08.01
[C#] 이벤트(event)  (0) 2017.07.26
[C#] Directory 와 DirectoryInfo 클래스  (0) 2017.07.19
0 0
Programming/C C++
 산술연산자

 +  덧셈
 -  뺄셈
 *  곱셈
 /  나눗셈
 %  나머지

예) int result = 3 + 4;

 증감연산자

 ++  1증가
 --  1감소

피연산자가 하나만 있는 단항연산자로 ++a; 처럼 사용되는 경우 선증가, a++; 처럼 사용되는 경우 후증가 연산을 수행합니다.

 쉬프트 연산자

 <<  왼쪽으로 비트 이동
 >>  오른쪽으로 비트 이동
int i = 10;
int j = i << 2;
위 예제의 경우 i변수의 2진수에서 왼쪽으로 2비트 만큼 이동한 값을 j에 대입합니다. 변수 j는 int형으로서 4byte인 32bit이고 이 비트를 왼쪽으로 2비트 만큼 밀고난 후 밀려난 부분을 0으로 채운 값(40)이 됩니다.

다만 오른쪽 쉬프트 연산자인 경우에는 피연산자가 음수이면 밀려난 자리에 0이 아닌 1의 값을 채우게 됩니다.

 논리연산자

 &&  논리곱(AND)
 ||  논리합(OR)

논리곱은 피연산자 모두 참(true)이여야 참(true)값을 반환하며 논리합은 피연산자중 하나만 참이여도 참의 값을 반환합니다.

 비트연산자

 &  논리곱(AND)
 |  논리합(OR)
 ^  베타적논리합(XOR)

피연산자의 비트값을 대상으로 연산을 수행하는 연산자입니다. 예를 들어 정수 3의 비트는 0011이고 정수 2의 비트는 0010 이므로 이 두개의 비트를 & 연산하게 되면 다음과 같은 결과값을 얻게 됩니다.

0011
0010
---- &
0010 -> 결과

참고로 ^ 연산자는 피연산자중 단 하나만 참(true)의 값을 가져야만 참이 되는 연산입니다.

0011
0010
---- ^
0001

 관계연산자

 <  오른쪽이 왼쪽보다 크다.  <=  오른쪽이 왼쪽보다 크거나 같다.
 >  왼쪽이 오른쪽 보다 크다.  >=  왼쪽이 오른쪽보다 크거나 같다.
 ==  같다.  !=  다른다.

연산의 결과가 0이면 false, 1이면 true

 대입연산자

 =  오른쪽 값을 왼쪽에 대입  +=  오른쪽 값을 왼쪽에 더함
 -=  오른쪽 값을 왼쪽값에 감산  *=  오른쪽 값을 왼쪽값에 곱함
 /=  오른쪽 값을 왼쪽값에 나눔  %=  오른쪽 값을 나눈 나머지를 왼쪽에 대입
 <<=  왼쪽값을 오른쪽 값만큼 왼쪽 쉬프트 수행  >>=  왼쪽값을 오른쪽 값만큼 오른쪽 쉬프트 수행
 &=  오른쪽 값의 비트 논리곱 결과를 왼쪽에 대입  ^=  오른쪽 값의 비트 베타적 논리합 결과를 왼쪽에 대입
 !=  오른쪽 값의 비트 논리합 결과를 왼쪽에 대입    

예)
int a = 0;
a += 1;

'Programming > C C++' 카테고리의 다른 글

[Visual C++] 구조체  (0) 2012.07.05
[Visual C++] 함수  (0) 2012.07.04
[Visual C++] 연산자  (0) 2012.07.03
[Visual C++] 흐름제어  (0) 2012.07.02
[Visual C++] 형변환  (0) 2012.06.29
[Visual C++] 나열형(enum)  (0) 2012.06.28
0 0
1
블로그 이미지

클리엘