我试图找到一个数字的二进制基数,比如将数字舍入到它下面的最大整数的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)
谢谢:)
在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)
执行没有区别.两个片段都会给出相同的结果但是我们应该使用后者或第一个,因为一个是更好的编程习惯,而另一个则不是.
我试图在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)
我想在类中添加一些数据并创建该类的链接列表.
提前致谢!