A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
21
Task/Gray-code/Java/gray-code-1.java
Normal file
21
Task/Gray-code/Java/gray-code-1.java
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
public class Gray {
|
||||
public static long grayEncode(long n){
|
||||
return n ^ (n >>> 1);
|
||||
}
|
||||
|
||||
public static long grayDecode(long n) {
|
||||
long p = n;
|
||||
while ((n >>>= 1) != 0)
|
||||
p ^= n;
|
||||
return p;
|
||||
}
|
||||
public static void main(String[] args){
|
||||
System.out.println("i\tBinary\tGray\tDecoded");
|
||||
for(int i = -1; i < 32;i++){
|
||||
System.out.print(i +"\t");
|
||||
System.out.print(Integer.toBinaryString(i) + "\t");
|
||||
System.out.print(Long.toBinaryString(grayEncode(i))+ "\t");
|
||||
System.out.println(grayDecode(grayEncode(i)));
|
||||
}
|
||||
}
|
||||
}
|
||||
12
Task/Gray-code/Java/gray-code-2.java
Normal file
12
Task/Gray-code/Java/gray-code-2.java
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
public static long grayEncode(long n){
|
||||
long result = 0;
|
||||
for(int exp = 0; n > 0; n /= 2, exp++){
|
||||
long nextHighestBit = (n >> 1) & 1;
|
||||
if(nextHighestBit == 1){
|
||||
result += ((n & 1) == 0) ? (1 << exp) : 0; //flip the bit
|
||||
}else{
|
||||
result += (n & 1) * (1 << exp); //"n & 1" is "this bit", don't flip it
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
11
Task/Gray-code/Java/gray-code-3.java
Normal file
11
Task/Gray-code/Java/gray-code-3.java
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
public static BigInteger grayDecode(BigInteger n){
|
||||
String nBits = n.toString(2);
|
||||
String result = nBits.substring(0, 1);
|
||||
for(int i = 1; i < nBits.length(); i++){
|
||||
//bin[i] = gray[i] ^ bin[i-1]
|
||||
|
||||
//XOR with characters
|
||||
result += nBits.charAt(i) != result.charAt(i - 1) ? "1" : "0";
|
||||
}
|
||||
return new BigInteger(result, 2);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue