弱弱的问下我想取一个int型的最高1位,如何取?
若取中间某几位的值又怎么取?
若取中间某几位的值又怎么取?
解决方案 »
- 关于EDIT控件透明的问题!!!!!!!!!!!!!!!!
- 关于异常提示窗体,错误窗口
- 消息捕获
- hge例程无法通过VC2005编译,先是少LIBC.LIB库,后来又产生内存冲突,郁闷!
- 关于MFC7.0中的消息宏ON_CONTROL_RANGE,在线等待!!!
- 求ccb的cdc设计
- 急,如何在一个模式对话框的DoModel里得到它的主对话框的句柄?
- 高分求解:我的电脑里面左边的信息提示没了,恢复注册表也不行!
- 当从pc硬盘上拷贝文件到移动磁盘上时,程序怎么获得数据是否传输完毕 ??
- ListBox中继续写的问题
- dll注入后,目标进程关闭,如何通知外壳程序关闭?
- 请教如何将一个listctrl中的内容赋给另一个listctrl?
int p = 0;
while (n != 0)
{
bit[p] = n % 10;
n = n / 10;
p++;
}想取任何位都可以。
取其中的某几位,基本操作就是进行位移,先左移,后右移。
比如32位int,你要去第5-8位(这里假设最低位为0,最高位为31),那么操作就是:
int n;
n << (31-8);
n >> 31- (8-5);
如: x >> 31 就是去取最高的值。
sorry, 应该是i & 0x1000;
int类型是32位的,我的函数默认最高位是第1位,最第位是32位
#include "stdafx.h"
#include <stdio.h>
int CheckInt(int i,int wei);
int main(int argc, char* argv[])
{
int i=100;
int wei=1;
CheckInt(i,wei);
i=-100;
wei=1;
CheckInt(i,wei);
i=1;
wei=32;
CheckInt(i,wei);
i=2;
wei=32;
CheckInt(i,wei);
return 0;
}
int CheckInt(int i,int wei)
{
int j;
if(wei>0 && wei<33)
{
j=i<<(wei-1);
__asm
{
mov eax,j
and eax,0x80000000
jnz __fushu
}
printf("%d的第%d位为0\n",i,wei);
goto endfun;
__fushu: printf("%d的第%d位为1\n",i,wei);
}
else
{
printf("你输入的位数不在范围内。\n");
}
endfun: return 1;
}