模拟二进制实现减法
#! /usr/bin/python # coding=utf-8 import math def main(x,y): #对减数取反 x, y = bin(x)[2:], bin(y)[2:] l = max([len(x),len(y)]) #最大长度 #对y取反 y = "1" * (l - len(y)) + "".join(['1' if i == '0' else '0' for i in y]) x,y = int(x,2), int(y,2) z = x + y + 1 z = bin(z) #拿掉最高位 z = z[3:] return int(z,2) if __name__ == '__main__': import unittest,random class cacheTest(unittest.TestCase): def test_img(self): for i in range(0,100000): x, y = random.randint(1, 1000),random.randint(1, 1000) if x < y : x,y = y,x self.assertEqual(main(x, y), x - y) unittest.main()