|
비트 계산시 꼭 배열로 해야하는 이유가 있나요?
비트로서의 분해를 먼저 하시기 전에 보수부터 구하시는게 빠르실겁니다.
2의 보수를 계산하는 방법은 모든 비트를 뒤집고 1을 더해주는거겠죠...
미리 배열로 비트를 쪼개버리면 계산하기가 참 까다롭습니다.
8비트 보수 계산을 예로 들면...
unsigned char bit;
bit입력을 받은후...
bit=bit^0xff;
bit=bit+1;
이러면 2의 보수 계산이 됩니다. XOR를 사용해서 비트를 뒤집어 버리면 됩니다.
이렇게 된 후 비트로 쪼개면 되겠죠. 여러가지 방법이 있겠군요...
for(int i=0;i<8;i++)
{
if(bit&(0x01<
:
: #define N 16
:
: void main()
: {
: char *p, num[N+1] = {0};
: int i, r, n1, n2;
:
: while(1)
: {
: printf("\n정수를 입력하세요(종료:0) : ");
: scanf("%d", &n1);
:
: n2 = n1;
:
: if( n1 == 0)
: break;
: for( i = 0; n1 != 0; i++)
: {
: r = n1 % 2;
: num[N-1-i] = r + '0';
: if (r==0)
: printf("1");
: else
: printf("0");
: n1 = n1 / 2;
: }
:
:
: p = num+N-i;
:
: printf("\n2진법으로 변환 : %s\n",p);
:
:
: }
: }
|