第15章 位運算

Description

已知鍵盤輸入的單字節的數據中,存有兩項信息:第2位存有性別(0表明male,1表明female),第三、四、5位存有班級(000表明1班,001表明2班,010表明3班,...,111表明8班)。請編程,從輸入的數據中提取這兩項信息並輸出。說明:每一個字節的最右邊是第0位編程

Input

輸入一個單字節的數據spa

Output

輸出兩項信息ip

Sample Input

12

Sample Output

2,female
 
 

#include <stdio.h>
#include <stdlib.h>

int main()
{
int a,b;
scanf("%d",&a);
b=a;
b=b>>3;
b=b%8;
printf("%d",b+1);
a=a&4;
if(a==0)
{
printf(",male");
}
if(a==4)
{
printf(",female");
}
return 0;
}內存

 

Description

鍵盤輸入一個正整數,輸出其二進制數據
本題必須用位運算的方法作, 不然不得分。get

Input

輸入一個十進制正整數io

Output

輸出二進制數(整數在內存中佔多少位,則輸出多少位)
class

Sample Input

100

Sample Output

00000000000000000000000001100100 
 
 

#include <stdio.h>
#include <stdlib.h>二進制

int main()
{
int a,c[32];
scanf("%d",&a);
int i,b;
b=1;
for(i=0;i<32;i++)
{
if(a&b)
{
c[i]=1;
}
else
{
c[i]=0;
}
b=b<<1;
}
for(i=31;i>=0;i--)
{
printf("%d",c[i]);
}
return 0;
}方法

Description

鍵盤輸入一個整數(正、負、0都可),求其補碼或原碼(後面輸入的數是1則求原碼,如果2則求補碼)數據

Input

 

任意int型數據,而後再輸入一個整數決定求原碼仍是補碼(1----原碼,2---補碼)

Output

原碼或補碼

Sample Input

100 1

Sample Output

00000000000000000000000001100100
 

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i,n;
char k;
scanf("%d%c",&n,&k);
while(k!='1'&&k!='2')
{
k=getchar();
}
if(k=='1'&&n<0)
{
n--;
n^=~0;
n|=1<<sizeof(int)*8-1;
}
for(i=sizeof(int)*8-1;i>=0;i--)
{
printf("%d",n>>i&1);
}
printf("\n")
return 0;
}

相關文章
相關標籤/搜索