- 博客(4)
- 收藏
- 关注
原创 异或XOR怎么用别的逻辑运算替代
异或XOR的结果保存了两个数间的不同位。 那么 A & B 可以把相同的1保存下来。 !A & !B 可以把相同的0保存下来。 (A & B) | (!A & !B) = 保存了两个数相同的位。 最后再反一次:!( (A & B) | (!A & !B) ) = 保存了不同位。 根据公式 1) !( A | B ) = !A & !B 2) !( A &
2012-08-02 22:53:17
1865
原创 【面试题】求两个数的2进制差异位的个数
A = 100 B = 50 两个数的二进制位数差异有几个? 先转换成二进制格式 A = 1100100 B = 0110010 掰指头用眼睛数一下,是4个位不同。 那么对比的方式可以用XOR解决。 A XOR B = 1010110那么不同的位就转换为了1,相同的位为0. 那么不同的个数 = 1的个数。 int num = 0
2012-08-02 22:43:07
552
原创 【面试题】【c++】 实现只能在堆上实例化的类
这题目面试官的愿意是考察的是C++对象的生命周期。 也就是,栈对象在离开作用域时会析构。 对于如下的代码: Class A {}; void func() { A a; //do something }经过编译后,会在最后插入析构函数: void func() { A a; //a.A::A(); //do something a.A::~A(
2012-08-02 22:13:00
341
原创 【面试题】打印最长升序子序列
有数组int a[] = {1, 2, 3, 4, 5, 8, 6, 3, 0, 6, 2, 4, 8, 1, 0, 8, 5, 6, 2, 5, 9, 10, 8, 6}; 打印出升序的最长的一个子序列,比如这里从1开始到8的序列最长。 这里包含两个问题: 1 找到升序的序列: 序列可以用一个二元组表示 {起始位置,长度},或者{起始位置,终止位置} 或者 {终止位置,长度}。
2012-08-02 22:09:26
433
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人