# include <stdio.h>
# include <stdbool.h>
int main(void) {
unsigned char c = 0xaa;
printf("c=%hhx\n",c);
printf("~c=%hhx\n",(char)~c);//取反
printf("-c=%hhx\n",(char)-c);//补码
return 0;
}
# include <stdio.h>
# include <stdbool.h>
int main(void) {
unsigned char c = 0xa5;
printf("c=%d\n",c);
printf("c<<2=%d\n",c<<2);//左移两位
return 0;
}
# include <stdio.h>
# include <stdbool.h>
int main(void) {
int number;
//scanf("%d",&number);
number = 0x55555555;
unsigned int mask = 1u <<31;
for(;mask;mask >>= 1){
printf("%d",number&mask?1:0);
}
printf("\n");
return 0;
}
位段
# include <stdio.h>
# include <stdbool.h>
struct u0 {
unsigned int leading :3;//占3个位置
unsigned int flag1 :1;
unsigned int flag2 :1;
int trailing :27;
}uu;
void prtbin(unsigned int number)
{
unsigned int mask =1u<<31;
for(;mask;mask>>=1){
printf("%d",number&mask?1:0);
}
printf("\n");
}
int main(void)
{
uu.leading =2;
uu.flag1 = 0;
uu.flag2 = 1;
uu.trailing = 0;
printf("sizeof(uu)=%lu\n",sizeof(uu));
prtbin(*(int*)&uu);
return 0;
}