java—如何使用循环对位进行加法?

cbeh67ev  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(347)

例如,我有一个数字104,我想换一个位,然后每次加一个位。

String str = "h";
            String binary = new BigInteger(str.getBytes()).toString(2);
            int decimal = 0;
            int y =  Integer.valueOf(binary);
            System.out.println(y);
            System.out.println(y);
            y = y + 0x00000001;

            String z = String.valueOf(y);
            System.out.println("V  " + z);
            //byte[] bytes1 = z.getBytes("US-ASCII");
            decimal = Integer.parseInt(z, 2);
            System.out.println(decimal);

我得到一个错误“Exception in thread”main“java.lang.numberformatexception:对于输入字符串:“2”在基数2下

bogh5gae

bogh5gae1#

不知道你说的“加一点”是什么意思。
你的意思是在二进制数上加1,即简单地像这样递增数字吗?

char ch = 'h';
int num = ch;
print(num);
for (int i = 0; i < 10; i++) {
    num++;
    print(num);
}
static void print(int num) {
    System.out.println("Decimal: " + Integer.toString(num) +
                       "  Hex: " + Integer.toHexString(num) +
                       "  Binary: " + Integer.toBinaryString(num));
}

输出

Decimal: 104  Hex: 68  Binary: 1101000
Decimal: 105  Hex: 69  Binary: 1101001
Decimal: 106  Hex: 6a  Binary: 1101010
Decimal: 107  Hex: 6b  Binary: 1101011
Decimal: 108  Hex: 6c  Binary: 1101100
Decimal: 109  Hex: 6d  Binary: 1101101
Decimal: 110  Hex: 6e  Binary: 1101110
Decimal: 111  Hex: 6f  Binary: 1101111
Decimal: 112  Hex: 70  Binary: 1110000
Decimal: 113  Hex: 71  Binary: 1110001
Decimal: 114  Hex: 72  Binary: 1110010

或者你是不是想在结尾加一个1位,像这样?

char ch = 'h';
int num = ch;
print(num);
for (int i = 0; i < 10; i++) {
    num = (num << 1) | 1;
    print(num);
}

输出

Decimal: 104  Hex: 68  Binary: 1101000
Decimal: 209  Hex: d1  Binary: 11010001
Decimal: 419  Hex: 1a3  Binary: 110100011
Decimal: 839  Hex: 347  Binary: 1101000111
Decimal: 1679  Hex: 68f  Binary: 11010001111
Decimal: 3359  Hex: d1f  Binary: 110100011111
Decimal: 6719  Hex: 1a3f  Binary: 1101000111111
Decimal: 13439  Hex: 347f  Binary: 11010001111111
Decimal: 26879  Hex: 68ff  Binary: 110100011111111
Decimal: 53759  Hex: d1ff  Binary: 1101000111111111
Decimal: 107519  Hex: 1a3ff  Binary: 11010001111111111

相关问题