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;} ...
可以先用一个if语句判断一下输入整数的位数,然后再将输入的数据除以一定的数,如输入2562 先判断出是四位数,然后再除以1000,就变成2.562了,赋给一个整形变量自然得到最高位了
去掉最高位,就向左移位 去掉高2位,那么就向左移动8位,去掉低2位,就向右移动8位。
取,int a=b&0xf09(b为提取对象),最地位int a=b&0x0f(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&0000000000000000000000000000...
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语言中,我们可以使用位运算符来实现按位判断。常用的位运算符包括与运算符(&)、或运算符(|)、异或运算符(^)以及取反运算符(~)等。 在进行按位判断时,我们经常需要关注最高位。最高位指的是二进制数中最左边的位,也就是数值最高的位。在C语言中,我们可以通过移位运算来判断最高位的值。 移位运算是...
用与运算符和移位运算符搞定。比如取一个32位int类型A的高8位,放到int类型B的低8位,如下操作。A & 0xF000 取得高8位,其他位清零 (A & 0xF000) >> 24 左移24位,只留下高8位。B & 0xFFF0 低8位清零 (B & 0xFFF0) | ((A & 0xF000) >> 24) 这个样子即可。
现把这个数赋值给八位的寄存器,就是类型自动转换,得到了低八位,然后把这个数右移8位 在赋值即可
2.位或:| 操作:1 | 1 = 1; 1 | 0 = 1; 0 | 0 = 0; 特点:只有全0的时候才是0,其他情况都是1. 总结:任何数和1位或就是1,和0位或没有变化,所以位或常用在置1上(置1用位或)。 3.位取反:~ 操作:~1 = 0; ~0 = 1; 特点:1取反为0,0取反为1. ...
有时,需将某一串数字中感兴趣的某些位的数据进行提取,并将提取的数据合并成新数据,可用位运算来实现。 1.取低几位的数:可用&运算符,通过取低几位的二进制置为1来实现。(低8位:0xff) 2.取高几位的数:先通过右移将高几位数据移到低位,再通过&运算来实现。