projprog/C8.6.c

79 lines
1.5 KiB
C

#include <stdio.h>
#define NC ((int)sizeof(int)*8-1)
unsigned int mi(unsigned int i){
return 1<<i;
}
void printtt(unsigned int i){
printf("%d = 0x%x = 0b",i,i);
int k=0;
while(i>>k!=0)k++;
k--;
while(k>=0){
printf("%d",((i&(1<<k))>>k));
k--;
}
printf("\n");
}
int main(){
for(int i=0;i<=5;i++)
printtt(mi(i));
printf("Votre nombre : ");
unsigned int n;
scanf("%d", &n);
printf("Votre nombre est ");
printtt(n);
// (a)
printf("Votre nombre est ");
printf(((n & mi(0)) == 0)?"pair":"impair");
printf("\n");
// (a')
printf("Votre nombre est ");
printf((n%2 == 0)?"pair":"impair");
printf("\n");
// (b)
printf("Votre 3e bit est ");
printf(((n & mi(3)) == 0)?"0":"1");
printf("\n");
// (c)
printf("Votre octet de poids faible est ");
printf(((n & (mi(0)|mi(1)|mi(2)|mi(3)|mi(4)|mi(5)|mi(6)|mi(7))) == 7)?"égal à 7":"différent de 7");
printf("\n");
// (c')
printf("Votre octet de poids faible est ");
printf(((n & 0xFF) == 7)?"égal à 7":"différent de 7");
printf("\n");
// (d)
printf("Votre nombre avec le bit de pos 1 à 1 est ");
printtt(n | mi(1));
// (e)
printf("Votre nombre avec le bit de pos 1 et 4 à 1 est ");
printtt(n | mi(1) | mi(4));
// (f)
printf("Votre nombre avec le bit de pos 1 et 2 à 0 est ");
printtt(n & (~(mi(1) | mi(2))));
// (g)
printf("L'octet de poids faible de votre nombre est ");
printtt(n & 0xFF);
// (h)
printf("Votre nombre en changeant la valeur du 4e bit est ");
printtt((n ^ mi(4)));
return 0;
}