小编Sur*_*shS的帖子

找到二进制基数的最快方法

我试图找到一个数字的二进制基数,比如将数字舍入到它下面的最大整数的floor函数,我想将数字四舍五入到它下面的第一个二进制数.

例如:

for 1000 it should be 512
for 10 it should be 8
for 208 it should be 128
Run Code Online (Sandbox Code Playgroud)

这就是我尝试过的.我觉得日志功能会消耗更多资源,所以有更快的方法吗?

#include<stdio.h>
int main()  {
    unsigned long long int num;
    unsigned long long int mask;
    scanf("%llu", &num);
    mask = 0x80000000;
    while(mask >>= 1)   {
        if (mask & num)
            break;
    }
    printf("%llu\n", mask);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢:)

c algorithm bit-manipulation

5
推荐指数
2
解决办法
389
查看次数

if-else vs if-else-if-else

在else中使用if else和else或if else和其他条件之间是否有任何区别.例如,

if (i == 5)
  printf("i is 5");
else if (i > 5)
  printf("i is greater than 5");
else
  printf("i is less than 5");
Run Code Online (Sandbox Code Playgroud)

要么

if (i == 5)
  printf("i is 5");
else {
  if (i > 5)
    printf("i is greater than 5");
  else
    printf("i is less than 5");
}
Run Code Online (Sandbox Code Playgroud)

执行没有区别.两个片段都会给出相同的结果但是我们应该使用后者或第一个,因为一个是更好的编程习惯,而另一个则不是.

c conditional-statements

0
推荐指数
1
解决办法
600
查看次数

LinkedList中的所有元素与添加的元素具有相同的值

我试图在java中学习Linked List类的实现.但是每当我调用get方法时,我都会获得Last Node的内容.我无法弄清楚原因.代码如下,

package learningLinkedLists;
import java.util.LinkedList;

public class LinkedLists {
public static void main(String[] args) {
    Dummy d = new Dummy(0);
    LinkedList<Dummy> ll = new LinkedList<Dummy>();


    d.SetData(1);
    d.printData();
    ll.add(d);


    d.SetData(2);
    d.printData();
    ll.add(d);

    d.SetData(3);
    ll.add(d);

    System.out.println(ll);
    System.out.println(ll.get(1).data);
    System.out.println(ll.get(0).data);
    System.out.println(ll.size());
}

}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是,

1
2
[learningLinkedLists.Dummy@3b061299,learningLinkedLists.Dummy@3b061299,
learningLinkedLists.Dummy@3b061299]
3
3
3
Run Code Online (Sandbox Code Playgroud)

我想在类中添加一些数据并创建该类的链接列表.

提前致谢!

java linked-list

0
推荐指数
1
解决办法
2789
查看次数