10進数は2進数と16進数に変換します.


public class Main4{

	
	
	public static void main(String[] args)
	{
		Main4 solution = new Main4();
		// "0000000000001111,000F"
		System.out.println(solution.changeFormatNumber("15"));
		// "1111111111111111,FFFF"
		System.out.println(solution.changeFormatNumber("-1"));
		
		int num=(int)Math.pow(2, 15)-1;
		System.out.println(num);
		System.out.println(solution.changeFormatNumber(String.valueOf(num)));
		
		num=-(int)Math.pow(2, 15);
		System.out.println(num);
		System.out.println(solution.changeFormatNumber(String.valueOf(num)));
		
		num=(int)Math.pow(2, 15)+3;
		System.out.println(num);
		System.out.println(solution.changeFormatNumber(String.valueOf(num)));
		
		System.out.println(solution.changeFormatNumber("abc"));
	}
	
	
	/**
     *                              
     * @param number string            
     * @return string   
     */
    public String changeFormatNumber (String number) {
    	try
		{
    		char[] chars=new char[16];
        	//        num
        	int num = 0;
        	boolean isPlus = true; 
        	if(number.charAt(0)=='-'){
        		isPlus=false;
        		number=number.substring(1);    		
        	}
        	num=Integer.valueOf(number);
        	if(isPlus){
        		if(num>32767){
        			return "NODATA";
        		}
        	}else{
        		if(num>32768){
        			return "NODATA";
        		}
        	}
        	for(int i=0;i<16;i++){
        		int now=num&1;
        		if(now==0){
        			chars[15-i]='0';
        		}else{
        			chars[15-i]='1';
        		}
        		num=num>>1;
        	}	
        	
        	String binary = new String(chars);
        	if(!isPlus){
        		binary=changePlusToMinus(binary);
        	}
            return binary+","+getHexByBinaryNumber(binary);
		} catch (Exception e)
		{
			return "INPUTERROR";
		}
    	
    }
    
    /**  16  2      16  2    ,        , 1111111111111111-number+1
     * @param number
     * @return
     */
    public String changePlusToMinus(String number){
    	char[] chars=number.toCharArray();
    	//  1111111111111111-number
    	for(int i=0;i<16;i++){
    		if(chars[i]=='1'){
    			chars[i]='0';
    		}else{
    			chars[i]='1';
    		}
    	}
    	//  +1      ,     0,  1,        0
    	//      ,1 0,      0 1,  
    	for(int i=15;i>=0;i--){
    		if(chars[i]=='1'){
    			chars[i]='0';
    		}else{
    			chars[i]='1';
    			break;
    		}
    	}
    	return new String(chars);
    	
    }
    
    
    public Map map=new HashMap();
	{
		map.put("0000", "0");
		map.put("0001", "1");
		map.put("0010", "2");
		map.put("0011", "3");
		map.put("0100", "4");
		map.put("0101", "5");
		map.put("0110", "6");
		map.put("0111", "7");
		map.put("1000", "8");
		map.put("1001", "9");
		map.put("1010", "A");
		map.put("1011", "B");
		map.put("1100", "C");
		map.put("1101", "D");
		map.put("1110", "E");
		map.put("1111", "F");
	}

    /**   16          4         
     * @param binaryNumber
     * @return
     */
    public String getHexByBinaryNumber(String binaryNumber){
    	StringBuilder builder=new StringBuilder();
    	for(int i=0;i<16;i=i+4){
    		builder.append(map.get(binaryNumber.substring(i, i+4)));
    	}
    	return builder.toString();
    }
}
0000000000001111,000F
1111111111111111,FFFF
32767
0111111111111111,7FFF
-32768
1000000000000000,8000
32771
NODATA
INPUTERROR
10進数は16桁の2進数と4桁の16進数になります.
最初の10進数は正数の2進数になり、次に負の数なら、補数=逆符号+1で負の数に対応する2進数を生成します.
2進数を16進数に変え、4つの数字を1組にし、hashmapから16進数にします.