两个面试题。求高人解答
1. 设计数据库时,n维,如何设计。
例如[省份][城市][网吧],这是三维关系,它的表也应该有三个,网吧有外键引用城市,城市有外键应用省份,这个规律就是下层的要有一外键去引用上层。
2. 输入某个unsigned int,判断其二进制形式中有多少个1
例如:5有2个1,因为5的二进制形式是101;7有3个1,因为7的二进制是111
没有思路。求高人贴答案。谢谢。
[解决办法]
- Java code
public static void main(String[] args) { int num = 7; //new Demo9().getWeek(); String str=Integer.toBinaryString(num); System.out.println("数num的二进制为:"+str); int sum = 0; for (int i = 0; i < str.length(); i++) { System.out.println((int)(str.charAt(i))); if(49 ==(int)(str.charAt(i))) sum++; } System.out.println("数num的包含1的个数为:"+sum); }
[解决办法]
回答第一题吧:
如果一张表;写出表结构
id 父节点 name
1 0 湖南
2 1 长沙
3 1 邵阳
4 2 芙蓉区
5 3 邵阳县
……下面以此类推;根节点默认为0;子节点的父节点为节点id.
多张表也就是外键关联而已
[解决办法]
2、
- Java code
public static int bitscount(int x){ int count = 0; for(; x != 0; x >>= 1){ if((x & 0x1) != 0) count++; } return count;}