写一段函数,计算无符号32位整数从高到低,第一个‘1’的位置。(例如,0x0F000000的第一个‘1’的位置为5)
来源:互联网 发布:易语言钩子注入源码 编辑:程序博客网 时间:2024/06/02 05:29
使用2分查找的方法解决,从左到右查找“1”的位置。
#include <stdio.h>int func(unsigned int data){ int pos = 1; //用于计数,计录第一个“1”的位置 if((data & 0xffff0000) == 0) //如果data与高16位相与后为零,表示data高16位中不含有“1” { data <<= 16; //将data左移16位,去除高16位 pos += 16; //pos加16,表示前16位中不含有数字“1” } if((data & 0xFF000000) == 0) { data <<= 8; pos += 8; } if((data & 0xF0000000) == 0) { data <<= 4; pos += 4; } if((data & 0xC0000000) == 0) { data <<= 2; pos += 2; } if((data & 0x80000000) == 0) { data <<= 1; pos += 1; } return pos;}int main(void) //测试代码{ printf("the pos =%d.\n",func(0xffffffff)); printf("the pos =%d.\n",func(0x00000001)); return 0;}
- 写一段函数,计算无符号32位整数从高到低,第一个‘1’的位置。(例如,0x0F000000的第一个‘1’的位置为5)
- 计算非0的64位数据中第一个为1的位的位置
- 从无符号数x中查找第一个'1'的位置的C 代码。注意效率
- 计算n的阶乘的二进制数字,从右往左数,第一个1的位置
- 获得32位数二进制位的第一个1的位置
- 对于针对字符串位置的操作,第一个位置被标记为1。
- 二分查找位运算——32位整数中寻找第一个为1的位
- 二分查找位运算——32位整数中寻找第一个为1的位
- 第一个不同字符的位置
- 怎样快速判断掩码第一个为1的Bit位置
- 怎样快速判断掩码第一个为1的Bit位置
- 怎样快速判断掩码第一个为1的Bit位置
- 统计无符号整数比特位为1的数量
- 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数
- 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数
- 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数
- 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数
- C++面试题之写一个在一个字符串中寻找一个子串第一个位置的函数
- oracle分页查询
- Error creating bean with name 'sessionFactory' defined in class path resource [spring/applicationCon
- mysql_ubuntu服务器上mysql客户端phpmyadmin 与Navicat的配置
- imshow,imagesc,image区别
- swprintf() — Format and Write Wide Characters to Buffer
- 写一段函数,计算无符号32位整数从高到低,第一个‘1’的位置。(例如,0x0F000000的第一个‘1’的位置为5)
- 05-2循环队列
- HDOJ 1026 Ignatius and the Princess I 解题
- 北京信息科技大学CSDN俱乐部第一次招新
- 网易开源游戏服务器框架-Pomelo实践(一)
- Centos iptables配置笔记
- 06递归-汉诺塔
- 使用SOCKET实现TCP/IP协议的通讯
- 多级分类的数据库设计