가 나는 나눗셈 (/)와 모듈 (%)를 사용하지 않고 2 10에서 염기를 변환하는 질문에 부여 된, 그래서 비트 AND (&)을 이용하여 용액과 오른쪽 해낸 shift (>>) 연산자.진수 부는 좌측 시프트
그래서이 두 연산자가 정확히 무엇을하는지 배우기 시작하지만 몇 가지 질문에 대해서는 대답을 찾지 못하거나 논리를 이해할 수 없습니다.
십진법 및 이진법 모두에서 숫자 자리 값에 따라 구분이 올바르게 작동하는 것으로 알고 있습니다. 우리가 숫자를 10 또는 2로 나눌 때 두 자리 모두에서 자리 값을 한 자리 씩 이동합니다. 그러면 10 진수로 10으로 나누고 2 진수로 2로 나누어집니다.
X = 120 X >> 1 우리 X = 12 (10 의한 분할)를 사용할 경우에 (10베이스)
Y = 1000
1 우리 >> 만약 Y (두 자료) X = 100 (2으로 나누기)
을 가지고 있지만 나는이 코드 조각을 사용하면됩니다
#include<iostream>
using namespace std ;
int main()
{
int a,b=1;
cout <<"enter an integer"<<endl;
cin>> a;
cout<<(a & b)<<endl;
a=a>>1;
cout<<a;
cout<<endl;
system("pause");
return 0 ;
}
나는이
같았다 내 마음에 comfused 원인을 얻을A = 120 (10베이스) X >> 1 우리는 X = 12 ( 10으로 나누는)
가되지만 결과이
A = 120이라면
F : 1 >> 만약 X (10베이스) 우리 I의 결과에 대한 두 가지 점을 이해하지 못하는 X = 60 (2! 의한 분할)
가지고 첫 번째 :이 연산자 (>>)가 숫자의 자리 값을 코드로 옮기고 숫자의 밑 (10)을 변경하지 않으면 코드의 결과에서 볼 수있는 것보다 다른 결과 (12)가 생성되어야합니다. 60). 왜 우리는이 결과 (60)를 볼 수 있지만 12는 볼 수 없습니까?
초 : 이진 왼쪽 시프트 (이게 나에게 맞는 것 같습니다.)는 IDE에서 처음에는 십진수를 이진수로 변경합니까, 그렇지 않습니까?
과 비트에 대한 그리고 논리 게이트 (이 보인다는 것입니다) 인 경우
: 우리는 0과 1 철강을 제외한 다른 값을 넣을 수 있습니다 1.How이 대답을 ?
2.According 비트 단위 AND 규칙
& Y 1 = Y 다음
는 120이어야하지만 코드 결과 인 1이 설명을 위해 무엇인가?
3. 어떻게하면 (수학 연산과 논리에 따라) 미리 알림을 생성 할 수 있습니까?
시프트는 비트, 즉 기본 2에서 작동하기 때문에 "비트 단위"라고합니다. C++의 숫자는 일반적으로 2 진수로 저장됩니다. 입력 및 출력에 대해서만 10 진수로 변환됩니다. –
'int'는 값을 가지고 있습니다. 값에는 기준이 없습니다. 그래서'a'는 어떤 기지에도 없습니다. C++의'>>'은 항상 기본 2입니다. Ergo, 결과 값 ... –