C 언어 비트 연산 에 대한 간단 한 예제

3725 단어 C 언어비트 연산
비트 연산 은 2 진법 에 따라 진행 되 는 연산 을 가리킨다.시스템 소프트웨어 에 서 는 바 이 너 리 문 제 를 처리 해 야 한다.C 언어 는 6 개의 비트 연산 자 를 제공 합 니 다.이 연산 자 는 기호 가 있 거나 기호 가 없 는 char,short,int 와 log 형식 에 만 사용 할 수 있 습 니 다.
1.float 형 수 를 입력 하고 16 진법 으로 32 비트 기계 수 를 출력 합 니 다.

#include<stdio.h>
void main()
{
 float a;
 int *p;
 printf("Input a float number:
"); scanf("%f",&a); p=(int *)&a; printf("%X",*p); }
2.키보드 에서 2 진 비 마이너스 정 수 를 입력 하고 화면 에 출력 에 대응 하 는 10 진,8 진,16 진 수 를 출력 하 며 출력 을 요구 하 는 16 진수 의 영문 자 모 는 대문자 이다.

#include<stdio.h>
void main()
{
 int ConvertBinaryToDecimal(long long n);//            
 long long n;
 printf("Input a binary number:
"); scanf("%lld",&n);// long long m; m=ConvertBinaryToDecimal(n);// printf("The number is %d in decimal.
",m);// printf("The number is %o in octal.
",m);// printf("The number is %X in hexadecimal.
",m);// } int ConvertBinaryToDecimal(long long n) { int i=1,j,sum=0;//i ,j ,sum while(n!=0) {// n 0 j=n%10; sum+=j*i; n/=10; i*=2; } return sum; }
3.정의 함수 void DecToBin(int a,char b[33]);함수 기능 은 정수 a 를 대응 하 는 32 비트 바 이 너 리 기계 수로 바 꾸 고 32 비트 바 이 너 리 기계 수 를 문자열 형식 으로 문자 배열 b('\0'문자 로 끝)에 저장 하 는 것 입 니 다.%2 연산 을 사용 할 수 없고 비트 연산 자(예 를 들 어 이동 연산,연산 등)를 이용 하여 프로그램 기능 을 수행 할 수 있 습 니 다.

#include<stdio.h>
void main()
{
 void DecToBin(int a,char b[33]);//    
 int n,i=0;char b[33];
 scanf("%d",&n);//        
 DecToBin(n,b);//    
}

void DecToBin(int a,char b[33])
{
 int i;
 if(a>=0)// a    ,         32 2     
 {
 for(i=0;i<32;i++)b[i]=0;
 b[32]='\0';
 i=0;
 while(a!=0)
 {
  b[i++]=a&1;
  a=a>>1;
 }
 }
 else// a    ,          ,     ,      1 
 {
 for(i=0;i<32;i++)b[i]=1;
 b[32]='\0';
 a=-a;
 i=0;
 while(a!=0)
 {//    
  if((a&1)==0)
  b[i++]=1;
  else
  b[i++]=0;
  a=a>>1;
 }
 b[0]+=1;//     1
 i=0;
 while(b[i]==2)//        
 {
  b[i]=0;
  b[++i]+=1;
 }
 }
 for(i=31;i>=0;i--)
 printf("%d",b[i]);//  
 printf("
"); }
4.정의 함수 unsigned mod(unsigned a,unsigned b,unsigned c);기능 은 a*b%c 의 결 과 를 계산 하고 되 돌려 주 는 것 입 니 다.시험 a,b,c 의 범 위 는 0 보다 크 고 231 보다 작 으 며 프로그램 은 64 비트 정형 을 사용 할 수 없습니다(예:long long 유형 또는int 64)풀이.

#include<stdio.h>
void main()
{
 unsigned mod(unsigned a, unsigned b, unsigned c);//    
 unsigned a,b,c;
 printf("Input unsigned integer numbers a, b, c:
"); scanf("%u%u%u",&a,&b,&c);// printf("%u*%u%%%u=%u
",a,b,c,mod(a,b,c));// } unsigned mod(unsigned a, unsigned b, unsigned c) { int i; int bin[32]={0}; i=0; while(b!=0) {// b 32 bin bin[i++]=b&1; b=b>>1; } unsigned result=a*bin[31];// result for(i=31;i>0;i--) result=(result<<1)%c+a*bin[i-1];// result result=result%c; return result;// result }
C 언어 비트 연산 에 관 한 간단 한 예제 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C 언어 비트 연산 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기