在指定 int 值的二进制补码表示形式中最高位(最左边)的 1 位之前,返回零位的数量
2011-11-25 14:26
232 查看
public static int numberOfLeadingZeros(int i) {
// HD, Figure 5-6
if (i == 0)
return 32;
int n = 1;
if (i >>> 16 == 0) { n += 16; i <<= 16; }
if (i >>> 24 == 0) { n += 8; i <<= 8; }
if (i >>> 28 == 0) { n += 4; i <<= 4; }
if (i >>> 30 == 0) { n += 2; i <<= 2; }
n -= i >>> 31;
return n;
}
// HD, Figure 5-6
if (i == 0)
return 32;
int n = 1;
if (i >>> 16 == 0) { n += 16; i <<= 16; }
if (i >>> 24 == 0) { n += 8; i <<= 8; }
if (i >>> 28 == 0) { n += 4; i <<= 4; }
if (i >>> 30 == 0) { n += 2; i <<= 2; }
n -= i >>> 31;
return n;
}
相关文章推荐
- 返回指定的 int 值的二进制补码表示形式中最低(“最右”)的为 1 的位后面的零位个数
- 返回具有至多单个 1 位的 int 值,在指定的 int 值中最高位(最左边)的 1 位的位置
- 根据 IEEE 754 浮点“双精度格式”位布局,返回指定浮点值的表示形式
- 返回指定小数位数的表示形式
- 给定两个链表表示的整数,编写函数对这两个整数求和,并用链表形式返回结果。
- 编写一个函数 int count_chars(char const *str,char const *chars) 函数应该在第一个参数中进行查找, 并返回匹配第二个参数所包含的字符的数量。
- Field的getModifiers()方法返回int类型值表示该字段的修饰符
- 编写函数,接受一对指向vector<int>的迭代器和一个int值。在两个迭代器指定的范围内查找给定的值,返回一个布尔值来指出是否找到。
- 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转
- 返回具有至多单个 1 位的 int 值,在指定的 int 值中最低位(最右边)的 1 位的位置
- C#返回在字典或列表中指定的序列中满足条件的元素数量 dictionary.count
- sql DateName\DatePart 返回表示指定date的指定datepart的字符串
- DATEPART 返回表示指定日期的指定日期部分的整数
- java实用方法系列 方法返回数组的表示形式(这个技巧有点不实用)
- 取给定正整数的指定bit位开始的指定长度的数据 将整数拆分成bit位表示的形式
- 指定long型数据的字节大小表示形式
- C语言中int类型数的表示范围及形式
- 13.01.17 c# Linq 从查询的结果中返回指定数量的记录
- Field的getModifiers()方法返回int类型值表示该字段的修饰符
- NSValue的使用...@encode(type)...int strcmp(const char *, const char *); 返回 0 表示相等