include <stdio.h>int main(){ int num; printf("input a num : "); scanf("%d", &num); if (num < 0) num = -num; while (num > 10) num /= 10; printf("highest order : %d\n", num); return 0;} ...
int temp = num;int count = 1;int res1 = 0,res2 =0;while(temp / 10 != k -1){ temp = temp/10;count *= 10;} res1 =temp;res2 = num - res1 *count;printf("k = %d, n = %d, m = %s",k,res1,res2);//大致思路了,具体值对不对还要compile下,楼主试试吧...
用c语言实现.返回结果 intn , int m要求,把num中的最高k位提取出来,并保存到n中,并把剩下的位保存到m中.【希望可以用纯算术运算得出结果】.(【即不可以把num转为字符串,然后提取,只能用加减乘除等算术运算】.)比如,
int main(){ int n;scanf("%d",&n);while(n/10)n/=10;//除10,为零说明就只剩最高位了 printf("%d",n);return 0;}
可以先用一个if语句判断一下输入整数的位数,然后再将输入的数据除以一定的数,如输入2562 先判断出是四位数,然后再除以1000,就变成2.562了,赋给一个整形变量自然得到最高位了
b为提取对象),long型是4字节伱可以这样,long a=b&0xf000,long a=b&0x000f;还有什么再问 那稍加修改:int a=b&1000000000000000b,int a=b&0000000000000001b,long a=b&10000000000000000000000000000000b,int a=b&00000000000000000000000000000001b;这是2进制数的位操作,虽然看起来麻烦,但是效率最高 ...
include <stdio.h>int main(void){ int num,i; printf("Enter a number:"); scanf("%d",&num); i=num; while(i/10) i=i/10; printf("最高位是:%d\t最低位是:%d\n",i,num%10); return 0;} ...
去掉最高位,就向左移位 去掉高2位,那么就向左移动8位,去掉低2位,就向右移动8位。
用与运算符和移位运算符搞定。比如取一个32位int类型A的高8位,放到int类型B的低8位,如下操作。A & 0xF000 取得高8位,其他位清零 (A & 0xF000) >> 24 左移24位,只留下高8位。B & 0xFFF0 低8位清零 (B & 0xFFF0) | ((A & 0xF000) >> 24) 这个样子即可。
和00000001按位与(&) 强制转换成要赋值的类型,最高位同理