reverse bits 的题目# Programming - 葵花宝典s*n2007-09-21 07:091 楼前不久看到有人提到这个问题。请问这个reverse是把1变成0,0变成1 还是左右reverse?1->0,0->1 XOR 11111111 就行了。左右reverse该怎么弄呢?
X*r2007-09-21 07:092 楼你知道数1 的个数那道题怎么做,就知道左右reverse这道题怎么做。(回有四种写法……)【在 s*****n 的大作中提到】: 前不久看到有人提到这个问题。: 请问这个reverse是把1变成0,0变成1 还是左右reverse?: 1->0,0->1 XOR 11111111 就行了。: 左右reverse该怎么弄呢?
k*f2007-09-21 07:094 楼jhq有【在 s*****n 的大作中提到】: 数1的题目很久前在一本interview书上看过,好像是挺多方法的,而且越来越出乎想象: 。现在不记得了,去找来看看。
s*u2007-09-21 07:095 楼是左右reverse吧,有奇技淫巧的,不是很记得..【在 s*****n 的大作中提到】: 前不久看到有人提到这个问题。: 请问这个reverse是把1变成0,0变成1 还是左右reverse?: 1->0,0->1 XOR 11111111 就行了。: 左右reverse该怎么弄呢?
X*r2007-09-21 07:097 楼这个……直接方法:一位一位移位取巧的方法:就地交换实用的方法:查表,或部分查表和就地交换相结合。就地交换方法如下,假设是32位无符号整数x = ((x & 0x55555555) << 1) | ((x & 0xAAAAAAAA) >> 1);x = ((x & 0x33333333) << 2) | ((x & 0xCCCCCCCC) >> 2);x = ((x & 0x0F0F0F0F) << 4) | ((x & 0xF0F0F0F0) >> 4);x = ((x & 0xFF00FF00) << 8) | ((x & 0x00FF00FF) >> 8);x = ((x & 0xFFFF0000) << 16) | ((x & 0x0000FFFF) >> 16);【在 s*****n 的大作中提到】: 可能我太笨了,我看了数多少个1的题目之后还是不知道改怎么左右reverse。: 谁指教一下?
s*n2007-09-21 07:098 楼多谢多谢!这自己想怎么也想不出来。【在 X****r 的大作中提到】: 这个……: 直接方法:一位一位移位: 取巧的方法:就地交换: 实用的方法:查表,或部分查表和就地交换相结合。: 就地交换方法如下,假设是32位无符号整数: x = ((x & 0x55555555) << 1) | ((x & 0xAAAAAAAA) >> 1);: x = ((x & 0x33333333) << 2) | ((x & 0xCCCCCCCC) >> 2);: x = ((x & 0x0F0F0F0F) << 4) | ((x & 0xF0F0F0F0) >> 4);: x = ((x & 0xFF00FF00) << 8) | ((x & 0x00FF00FF) >> 8);: x = ((x & 0xFFFF0000) << 16) | ((x & 0x0000FFFF) >> 16);
bz2007-09-21 07:099 楼现在这么搞的都是孔已己。连micro-controller们都不搞这些了。readability isruling.【在 s*****n 的大作中提到】: 前不久看到有人提到这个问题。: 请问这个reverse是把1变成0,0变成1 还是左右reverse?: 1->0,0->1 XOR 11111111 就行了。: 左右reverse该怎么弄呢?
s*u2007-09-21 07:0910 楼感觉如果真的跑的快很多的话也是有用的,有人明白就好,不是哪里都是readability第一吧但是拿来面试的人真是烧了【在 bz 的大作中提到】: 现在这么搞的都是孔已己。连micro-controller们都不搞这些了。readability is: ruling.
k*k2007-09-21 07:0911 楼言论自由万岁!【在 bz 的大作中提到】: 现在这么搞的都是孔已己。连micro-controller们都不搞这些了。readability is: ruling.