由买买提看人间百态

topics

全部话题 - 话题: 0x1f
(共0页)
A*********t
发帖数: 64
1
来自主题: JobHunting版 - 这个bit counting是怎么实现的?
太牛了,一点都看不明白。
http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSe
// option 3, for at most 32-bit values in v:
c = ((v & 0xfff) * 0x1001001001001ULL & 0x84210842108421ULL) % 0x1f;
c += (((v & 0xfff000) >> 12) * 0x1001001001001ULL & 0x84210842108421ULL) %
0x1f;
c += ((v >> 24) * 0x1001001001001ULL & 0x84210842108421ULL) % 0x1f;
m********m
发帖数: 10
2
来自主题: JobHunting版 - L的onsite冤了
不知道这思路对不对,各位大牛指教。
1. create a map with word as key and a number as value
2. walk through each sentence and extract word
- if a word does not exist in map, assign a unique number and insert <
word, number> into the map
take "This is a good day" as example, you could have map end up like
"This", 0
"is", 1
"a", 2
"good", 3
"day", 4
- create a bit vector, and for each word in sentence, enable ith bit
which i == word number
... 阅读全帖
S*******t
发帖数: 97
3
来自主题: Programming版 - 问一下bitmap sorting的问题
看了programming pearls里面的bitmap sorting,
大致上的idea是明白了,但是看了书后面的源码,
实在不明白那三个function set, clr test实现
的原理。有没有人可以解释一下?
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000
int a[1 + N/BITSPERWORD];
void set(int i) { a[i>>SHIFT] |= (1<<(i & MASK)); }
void clr(int i) { a[i>>SHIFT] &= ~(1<<(i & MASK)); }
int test(int i){ return a[i>>SHIFT] & (1<<(i & MASK)); }
m********g
发帖数: 9
4
来自主题: Programming版 - 问个简单的bitwise的问题
在一本书上看到的
就是用bitmap来做sorting的经典题
实在不明白这个什么意思 a[i>>SHIFT] |= (1<<(i & MASK))
后面那个( 1<<(i&MASK) )是什么意思?
codes在下面
#include
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000
int a[1 + N/BITSPERWORD];
void set(int i) { a[i>>SHIFT] |= (1<<(i & MASK)); }
void clr(int i) { a[i>>SHIFT] &= ~(1<<(i & MASK)); }
int test(int i){ return a[i>>SHIFT] & (1<<(i & MASK)); }
l*******r
发帖数: 511
5
来自主题: Programming版 - 请教一个位操作的题目
programming pearls的习题。。
i是一个int
在bit vector的 set过程中
比如设第i位为1。
a[i>>5]|=(1<<(i&0x1F))
其中i&Ox1F是不是设置i%32位为1,其他为0?
但是我验证不出来。不能理解是怎么发生的?
有人帮忙解释一下吗?谢谢
d******k
发帖数: 4295
6
来自主题: Programming版 - 一个dot net浮点运算的问题
恩,我的结果是这个。
要不你用BitConverter.GetBytes( double x )在两段程序里都看看具体byte信息一致
不一致。
BitConverter.GetBytes( x);
{byte[0x00000008]}
[0x00000000]: 0x1f
[0x00000001]: 0xf4
[0x00000002]: 0x6c
[0x00000003]: 0x56
[0x00000004]: 0x7d
[0x00000005]: 0xae
[0x00000006]: 0xbe
[0x00000007]: 0x3f
BitConverter.GetBytes( y);
{byte[0x00000008]}
[0x00000000]: 0x33
[0x00000001]: 0x33
[0x00000002]: 0x33
[0x00000003]: 0x33
[0x00000004]: 0x33
[0x00000005]: 0x33
[0x000000... 阅读全帖
j*a
发帖数: 14423
7
来自主题: Programming版 - C10M 练习 step 1: 10M sockets
kernel: Mem-Info:
kernel: [] system_call_fastpath+0x1a/0x1f
kernel: [] ? page_fault+0x28/0x30
kernel: [] SyS_socket+0x5c/0xa0
kernel: [] sock_alloc_file+0x52/0x130
kernel: [] d_alloc_pseudo+0xe/0x20
kernel: [] __d_alloc+0x25/0x180
kernel: [] ? tcp_v4_init_sock+0x12/0x30
kernel: [] kmem_cache_alloc+0x227/0x280
kernel: [] ? inet_... 阅读全帖
i****k
发帖数: 668
8
来自主题: Programming版 - 问一道面试题
不好,建议用shift
int a = f1()+2*f1()+4*f1()+8*f1()+16*f1();
while(a >=30) {
a = ((a<<1) | f1())&0x1f;
}
return a;
(共0页)