看完题面可以发现这题难点主要是 加减法的进退位

下面我们来找规律:

一个二进制数 101111

对其进行 +1 操作

即得到 110000

再来一个 10110101111

+1 后得到 10110110000

可以发现当需要进位时将从后往前的第一个 0 变成了 ​1​,其后的所有 1 都变成 0

再看减法

101001000​−​1​=101000111

1010100​−​1​=1010011

即需要退位时将从后往前的第一个 1 变成了 ​0​,其后的所有 0 都变成 1

×2 在二进制中就像十进制中的 ×10 所以直接在后面添加一位 0

÷2 在二进制中就像十进制中的 ÷10 所以直接在后面去掉一位

对于加减法,同过while循环即可很容易进行处理

我们创建一个变量p,让p = n;

当为加法时

while(a[p] != '0') { a[p] = '0'; p--;

} a[p] = 1;

代表p会执行到第一个不为0的值停止,并且经过的位置全部赋值0,最终再将p位置赋值1即可

0 条评论

目前还没有评论...