黑马程序员技术交流社区
标题:
打印一个数的二进制原码
[打印本页]
作者:
why19910522
时间:
2015-8-8 23:21
标题:
打印一个数的二进制原码
void printBinary(int m){
// 提示用户输入一个数
printf("打印一个数的二进制原码\n请输入一个数:\n");
// 判断输入的数是否是数字,如果不是则使用getchar函数将缓冲区里的无效字符取出来,并重新输入
while (!(scanf("%d",&m))) {
while (getchar()!='\n');
printf("输入错误!请重新输入:\n");
}
// 当输入正数时,打印其二进制原码
if (m >= 0){
for (int i = 8*sizeof(int)-1; i >= 0; i--) {
// 让数右移i位,并与1进行与运算,然后打印结果
printf("%d",((m>>i)&1));
// 每打印8位就打印一个空格
if (0 == i%8) {
printf(" ");
}
}
}else{
// 当输入负数时,打印其二进制原码
for (int i = 8*sizeof(int)-1; i >= 0; i--) {
// 让最高位,既符号位永远打印1
if (8*sizeof(int)-1 == i){
printf("1");
}else {
// 让这个负数取反并加1既将这个负数的负号去掉,然后再去右移i位并和1进行与运算,然后打印
printf("%d",(((~m+1)>>i)&1));
}
// 让最高位,既符号位永远打印1
if (0 == i%8) {
printf(" ");
}
}
}
复制代码
作者:
阿伦666
时间:
2015-8-8 23:23
32个赞
作者:
why19910522
时间:
2015-8-9 21:01
阿伦666 发表于 2015-8-8 23:23
32个赞
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2