• 对于赋值,我们被要求创建一个返回反函数的函数.基本问题是从平方函数创建平方根函数.我想出了一个使用二进制搜索的解决方案和另一个使用牛顿方法的解决方案.我的解决方案似乎适用于cube-root和square-root,但不适用...
对于赋值,我们被要求创建一个返回反函数的函数.基本问题是从平方函数创建平方根函数.我想出了一个使用二进制搜索的解决方案和另一个使用牛顿方法的解决方案.我的解决方案似乎适用于cube-root和square-root,但不适用于log10.这是我的解决方案：#Binary Searchdef inverse1(f, delta=1e-8):"""Given a function y = f(x) that is a monotonically increasing function onnon-negative numbers, return the function x = f_1(y) that is an approximateinverse, picking the closest value to the inverse, within delta."""def f_1(y):low, high = 0, float(y)last, mid = 0, high/2while abs(mid-last) > delta:if f(mid) < y:low = midelse:high = midlast, mid = mid, (low + high)/2return midreturn f_1#Newton's Methoddef inverse(f, delta=1e-5):"""Given a function y = f(x) that is a monotonically increasing function onnon-negative numbers, return the function x = f_1(y) that is an approximateinverse, picking the closest value to the inverse, within delta."""def derivative(func): return lambda y: (func(y+delta) - func(y)) / deltadef root(y): return lambda x: f(x) - ydef newton(y, iters=15):guess = float(y)/2rootfunc = root(y)derifunc = derivative(rootfunc)for _ in range(iters):guess = guess - (rootfunc(guess)/derifunc(guess))return guessreturn newton无论使用哪种方法,当我在教授的测试函数中得到log10()的输入n = 10000时,我得到这个错误:(例外：当我使用牛顿的方法函数时,log10()是关闭的,而这二进制搜索方法相对准确,直到达到输入阈值,无论哪种方式,两个解决方案在n = 10000时抛出此错误)2: sqrt =     1.4142136 (    1.4142136 actual); 0.0000 diff; ok2: log =     0.3010300 (    0.3010300 actual); 0.0000 diff; ok2: cbrt =     1.2599211 (    1.2599210 actual); 0.0000 diff; ok4: sqrt =     2.0000000 (    2.0000000 actual); 0.0000 diff; ok4: log =     0.6020600 (    0.6020600 actual); 0.0000 diff; ok4: cbrt =     1.5874011 (    1.5874011 actual); 0.0000 diff; ok6: sqrt =     2.4494897 (    2.4494897 actual); 0.0000 diff; ok6: log =     0.7781513 (    0.7781513 actual); 0.0000 diff; ok6: cbrt =     1.8171206 (    1.8171206 actual); 0.0000 diff; ok8: sqrt =     2.8284271 (    2.8284271 actual); 0.0000 diff; ok8: log =     0.9030900 (    0.9030900 actual); 0.0000 diff; ok8: cbrt =     2.0000000 (    2.0000000 actual); 0.0000 diff; ok10: sqrt =     3.1622777 (    3.1622777 actual); 0.0000 diff; ok10: log =     1.0000000 (    1.0000000 actual); 0.0000 diff; ok10: cbrt =     2.1544347 (    2.1544347 actual); 0.0000 diff; ok99: sqrt =     9.9498744 (    9.9498744 actual); 0.0000 diff; ok99: log =     1.9956352 (    1.9956352 actual); 0.0000 diff; ok99: cbrt =     4.6260650 (    4.6260650 actual); 0.0000 diff; ok100: sqrt =    10.0000000 (   10.0000000 actual); 0.0000 diff; ok100: log =     2.0000000 (    2.0000000 actual); 0.0000 diff; ok100: cbrt =     4.6415888 (    4.6415888 actual); 0.0000 diff; ok101: sqrt =    10.0498756 (   10.0498756 actual); 0.0000 diff; ok101: log =     2.0043214 (    2.0043214 actual); 0.0000 diff; ok101: cbrt =     4.6570095 (    4.6570095 actual); 0.0000 diff; ok1000: sqrt =    31.6227766 (   31.6227766 actual); 0.0000 diff; okTraceback (most recent call last):File "/CS212/Unit3HW.py", line 296, in print test()File "/CS212/Unit3HW.py", line 286, in testtest1(n, 'log', log10(n), math.log10(n))File "/CS212/Unit3HW.py", line 237, in f_1if f(mid) < y:File "/CS212/Unit3HW.py", line 270, in power10def power10(x): return 10**xOverflowError: (34, 'Result too large')这是测试功能：def test():import mathnums = [2,4,6,8,10,99,100,101,1000,10000, 20000, 40000, 100000000]for n in nums:test1(n, 'sqrt', sqrt(n), math.sqrt(n))test1(n, 'log', log10(n), math.log10(n))test1(n, 'cbrt', cbrt(n), n**(1./3.))def test1(n, name, value, expected):diff = abs(value - expected)print '%6g: %s = %13.7f (%13.7f actual); %.4f diff; %s' %(n, name, value, expected, diff,('ok' if diff < .002 else '**** BAD ****'))这些是测试的设置方式：#Using inverse() or inverse1() depending on desired methoddef power10(x): return 10**xdef square(x): return x*xlog10 = inverse(power10)def cube(x): return x*x*xsqrt = inverse(square)cbrt = inverse(cube)print test()发布的其他解决方案在运行全套测试输入时似乎没有问题(我试图不查看已发布的解决方案).对这个错误的任何见解？似乎共识是数字的大小,但是,我教授的代码似乎适用于所有情况：#Prof's code:def inverse2(f, delta=1/1024.):def f_1(y):lo, hi = find_bounds(f, y)return binary_search(f, y, lo, hi, delta)return f_1def find_bounds(f, y):x = 1while f(x) < y:x = x * 2lo = 0 if (x ==1) else x/2return lo, xdef binary_search(f, y, lo, hi, delta):while lo <= hi:x = (lo + hi) / 2if f(x) < y:lo = x + deltaelif f(x) > y:hi = x - deltaelse:return x;return hi if (f(hi) - y < y - f(lo)) else lolog10 = inverse2(power10)sqrt = inverse2(square)cbrt = inverse2(cube)print test()结果：2: sqrt =     1.4134903 (    1.4142136 actual); 0.0007 diff; ok2: log =     0.3000984 (    0.3010300 actual); 0.0009 diff; ok2: cbrt =     1.2590427 (    1.2599210 actual); 0.0009 diff; ok4: sqrt =     2.0009756 (    2.0000000 actual); 0.0010 diff; ok4: log =     0.6011734 (    0.6020600 actual); 0.0009 diff; ok4: cbrt =     1.5865107 (    1.5874011 actual); 0.0009 diff; ok6: sqrt =     2.4486818 (    2.4494897 actual); 0.0008 diff; ok6: log =     0.7790794 (    0.7781513 actual); 0.0009 diff; ok6: cbrt =     1.8162270 (    1.8171206 actual); 0.0009 diff; ok8: sqrt =     2.8289337 (    2.8284271 actual); 0.0005 diff; ok8: log =     0.9022484 (    0.9030900 actual); 0.0008 diff; ok8: cbrt =     2.0009756 (    2.0000000 actual); 0.0010 diff; ok10: sqrt =     3.1632442 (    3.1622777 actual); 0.0010 diff; ok10: log =     1.0009756 (    1.0000000 actual); 0.0010 diff; ok10: cbrt =     2.1534719 (    2.1544347 actual); 0.0010 diff; ok99: sqrt =     9.9506714 (    9.9498744 actual); 0.0008 diff; ok99: log =     1.9951124 (    1.9956352 actual); 0.0005 diff; ok99: cbrt =     4.6253061 (    4.6260650 actual); 0.0008 diff; ok100: sqrt =    10.0004883 (   10.0000000 actual); 0.0005 diff; ok100: log =     2.0009756 (    2.0000000 actual); 0.0010 diff; ok100: cbrt =     4.6409388 (    4.6415888 actual); 0.0007 diff; ok101: sqrt =    10.0493288 (   10.0498756 actual); 0.0005 diff; ok101: log =     2.0048876 (    2.0043214 actual); 0.0006 diff; ok101: cbrt =     4.6575475 (    4.6570095 actual); 0.0005 diff; ok1000: sqrt =    31.6220242 (   31.6227766 actual); 0.0008 diff; ok1000: log =     3.0000000 (    3.0000000 actual); 0.0000 diff; ok1000: cbrt =    10.0004883 (   10.0000000 actual); 0.0005 diff; ok10000: sqrt =    99.9991455 (  100.0000000 actual); 0.0009 diff; ok10000: log =     4.0009756 (    4.0000000 actual); 0.0010 diff; ok10000: cbrt =    21.5436456 (   21.5443469 actual); 0.0007 diff; ok20000: sqrt =   141.4220798 (  141.4213562 actual); 0.0007 diff; ok20000: log =     4.3019052 (    4.3010300 actual); 0.0009 diff; ok20000: cbrt =    27.1449150 (   27.1441762 actual); 0.0007 diff; ok40000: sqrt =   199.9991455 (  200.0000000 actual); 0.0009 diff; ok40000: log =     4.6028333 (    4.6020600 actual); 0.0008 diff; ok40000: cbrt =    34.2003296 (   34.1995189 actual); 0.0008 diff; ok1e+08: sqrt =  9999.9994545 (10000.0000000 actual); 0.0005 diff; ok1e+08: log =     8.0009761 (    8.0000000 actual); 0.0010 diff; ok1e+08: cbrt =   464.1597912 (  464.1588834 actual); 0.0009 diff; okNone
展开全文
• 专为程序员打造的计算器，二进制运算强大，支持64位。 采用表达式驱动，输入表达式便即时显示结果，抛弃传统计算器繁琐的按钮，表达式可粘贴或回调重复使用。 支持二进制串直接运算，如0b1101 & 0b0011= 0b0001。 ...
• （3）将二进制形式的子网掩码”； （4）将”后的子网掩码与IP地址做“与”运算，将答案化为十进制便得到主机地址。 通过上面的一段大家应该有所了解了，如果还不太明白可勾选“示范”来查看。 我把上面...
• 1.abs()绝对值2.all()如果括号里所以数据为True就返回True，否则False；3.any()如果括号里任意一个数据为True，就返回True；则False；...5.bin()把一个整数十进制转换成二进制二进制代表：ob6.bool(...
1.abs() 取绝对值2.all() 如果括号里所以数据为True 就返回True，否则False；3.any() 如果括号里任意一个数据为True，就返回True；反则False；4.ascii() ascii([1,2,"我们"]) 结果看起来是一个列表，实际上结果类型是str；把一个内存变成一个可打印的字符串形式。5.bin() 把一个整数十进制转换成二进制：二进制代表：ob6.bool() 判断True/False7.btyearray()   把一个字符串变成一个列表可以修改，打印和修改的内容是字符对应的ascii表里边的位置；例如：a = bytearray("abcde",encoding="utf-8")print (a[1])a[1] = 50print (a)8.bytes() 将一个字符转换成二进制格式9.callable() 判断括号里边参数可否被调用； print(callable([1,2,3])) 列表不可以被调用；函数可以被调用；10.chr()  输入整数返回ascii表对应的字符 chr(97) 输出a；ord()是相反的ord(a)11.classmethod12.compile() 用于将python代码编译成源代码的意思例如：c = for i in range(10);print (i)c = compile(code,"","exec")     #exec:代表可执行代码exec(c)     #执行代码修正：：：：：：：：：：：：：：：：：：；13.complex() 负数14.delattr() 关于面向对象的15.dir() 查看参数有什么方法16.divmod() 返回商和余数；divmod(5,2)17.enumerate()18.eval()   把字符串转成字典，有for循环、语句之类的要用exec19.exec()20.filter()匿名函数：#函数就用一次，用完就删除def a(n):print(n)a(5)#用匿名函数写成如下：a2 = lambda n :print(n)a2(6)#匿名函数只能处理简单的print或者计算，复杂的就不行了，如：def b(n):print(n)for i in range(n):print(n)#filter() 过滤想要的打印出来#如：res = filter(lambda n:n>5 ,range(10))   #res是一个迭代器,把大于5的全部打印出来。print(res)for i in res:print(i)21.map() 把后边的值放到前边的数据里来处理，再接着运行；res = map(lambda n:n*2,range(10))#相当于[i*2 for i in range(10)]#也可以写成:[lambda i:i*2 for i in range(10)]for i in res:print(i)22.reduce() 累加运算import functoolsres = functools.reduce(lambda x,y: x+y,range(10))#x默认是0  y是1 ，处理x+y 将值赋值给x ，再循环第二次 x=1 y=2 在相加；依次相加赋值累加；print(res)23.float() 浮点数24.format() 字符串格式化25.frozenset() 不可变集合；a = frozenset([1,2,3,4,5,4,3,2])26.getattr()27.globals() 返回当前整个文件的内容 以key value形式显示；print(globals())用于查看变量当前存在不存在28.hasattr()29.hash()   利用折半查找；非常高效；例如：有一个信息表：张三 12 男李四 13 女hash会把上边的表对应生成一个对应关系：1   张三 。。。2   李四 。。。然后再将1 2 3 4 生成一个有序的列表；当要查找张三的时候：hash利用折半查找法 查找张三对应的序号；30.help()   帮助31.hex()    把一个数字转成十六进制32.id() 返回内存地址33.input() 输入34.int()   把一个数字转成一个整形35.isinstance()36.issubclass() 是否是一个子类37.iter() 转换成一个迭代器38.len() 查看宽度39.locals() 打印内部变量def test():local_var =333print(locals())test()40.max() 返回列表里边最大值41.memoryview()42.min() 返回列表里边最小值43.next() 相当于迭代器里边的__next__()44.object  对象；在python里边一切皆对象；45.oct()  转八进制 oct(8)  ;逢八进一46.open()47.pow() 返回第一个参数的第二个参数次方；pow(2,4) 返回2的4次方48.print()49.property50.range()51.repr() 用字符串表示一个对象，但是转不回去。52.reversed() 反转53.round() 设置保留余数位数；round(1.222.2) 输出：1.2254.set() 集合55.setattr()56.slice() 切片57.sorted() 排序a = {6:2,8:0,1:4,-5:1,99:22}print(sorted(a.items()))    #key 按顺序排序print(sorted(a.items(),key=lambda x:x[1]))  #value 按顺序排序print(a)58.staticmethod()59.str()60.sum() 列表求和61.super() 面向对象里边的继承概念62.tuple()63.type() 查看数据类型64.vars() 返回一个对象的所有属性名65.zip() 把数据对应拼一块a = [1,2,3]b = ["a","b","c"]for i in zip(a,b):print(i)输出：(1, 'a')(2, 'b')(3, 'c')如果a=[1,2,3,4,5,6] 按照最小的数据列表显示，也就不显示456；66.__import__  直接导入模块里边的字符串，在不知道模块名字的情况下；__import__("abcd")
展开全文
• 14. 二进制函数: bin 14 15. 十六进制函数: hex 15 16. 反转十六进制函数: unhex 15 17. 进制转换函数: conv 15 18. 绝对值函数: abs 16 19. 正取余函数: pmod 16 20. 正弦函数: sin 16 21. 正弦函数: asin 16 22....
• 随便看一段IDA的汇编：    C++编译器用于区分重载函数的机制。为了给重载函数生成唯一的名称，编译器用其他字符来修饰函数名称 图左就是C++的后缀命名法，图右是...如果一个二进制文件使用了后缀命名，IDA的

随便看一段IDA的反汇编：
C++编译器用于区分重载函数的机制。为了给重载函数生成唯一的名称，编译器用其他字符来修饰函数名称

图左就是C++的后缀命名法，图右是正常的函数名字

为了显示正常的函数名字，使用Options▶Demangled Names

比如，我们选中Names，反汇编将显示为：

附

如果一个二进制文件使用了后缀命名，IDA的取消改编功能会立即展示函数的参数类型和返回类型。相反，如果函数并未使用后缀命名，你必须花费大量时间分析，从而确定函数的签名。
当然，一般的C++都是后缀命名，所以在切换成Names后，我们能立即看到operator new(int)这样的完整定义


展开全文
• 26 BIN2DEC 这个函数二进制数转换为十进制数。负数用二进制数补码表示 27 CHAR 返回对应于数字代码的字符。函数 CHAR 可将其他类型计算机文件中的代码转换为字符。 28 CLEAN 删除文本中不能打印的...
• 说明——（一二反，三再。）　第一步：子程序指针，选择语法，按下汇编。　第步：找到汇编代码（子程序封装）中的首个“call XXXXXXXX”，这是子程序的实际地址。　第三步：再次按下汇编，如果在...
• 易语言本土化模块V2.20源代码 系统结构:十进制,表达式计算,二分查找,十进制转换为二进制,函数计算,括号计算,内部计算,圆周率,求正弦,求余弦,象素到厘米,厘米到象素,求直线距
• 函数作用:十进制转二进制...........................90 '80.函数作用:检查一个数组是否为空.....................90 '81.函数作用:字母栏名转数字栏名.......................91 '82.函数作用:数字栏名转文字栏名.....
• 编译是软件逆向分析的重要手段之一，是将由编译产生的二进制代码转换成与之逻 辑和功能等价的高级代码形式，在代码移植、软件理解与维护等方面具有重要作用。随着 互联网软件的飞速增长，编译在保障软件可用性及...
• 我的策略是先利用除2余法将所给正整数的二进制编码存放在一个字符串变量中，然后对该字符串进行遍历，采用二进制转十进制的方法将其转换为一个十进制数。需要注意的是代码中用到了求x的y次方的函数pox(x，y). ...
Problem:

Solution:
题目要求将给定整数的二进制码变反后，输出新的二进制码所代表的整数。
我的策略是先利用除2取余法将所给正整数的二进制编码存放在一个字符串变量中，然后对该字符串进行遍历，采用二进制转十进制的方法将其转换为一个十进制数。需要注意的是代码中用到了求x的y次方的函数pox(x，y).
class Solution {
public:
int findComplement(int num) {
string ss;
int temp;
int len;
int sum = 0;
while (num != 0)
{
temp = num % 2;
num = num/2;
ss = to_string(temp)+ ss;
}
len = ss.size();
for (int i =0;i < len;i++)
{
if (ss[i] == '0') sum += pow(2,len-i-1);
}
return sum;
}
};当然这道题直接用移位操作解起来会更简洁，不知道那些大神是怎么想出来的，现阶段我的水平看得懂，但要让我独自写出来感觉好难，还是用自己理解的了的这种笨办法吧。。再接再厉

展开全文
• 将一个二进制构成的字符串转换为十六进制 46.ROWIDTOCHAR 将ROWID数据类型转换为字符类型 47.TO_CHAR(date,'format') SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual; TO_CHAR(SYSDATE,'YY -----...
• SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- ...
• 79.十进制转二进制 80.检查一个数组是否为空 81.字母栏名转数字栏名 82.数字栏名转文字栏名 83.判断一件活页夹中是否还有子目录 84.判断一个文件是否在使用中 85.列出档案详细摘要信息 86.获取菜单ID编号及名称列表 ...
• 本书侧重于函数的实战应用，共分12章，前10章分别介绍了数学函数、统计函数、日期和时间函数、文本函数、逻辑函数、查找和引用函数、财务函数、信息函数以及数据库和三角函数在实战中的应用；第11 章介绍了函数与...
• ## c/c++math.h标准库

千次阅读 2018-03-17 13:53:51
abs -- 绝对值acos -- 余弦acosh -- 双曲余弦asin -- 正弦asinh -- 双曲正弦atan2 -- 两个参数的反正切atan -- 反正切atanh -- 双曲正切base_convert -- 在任意进制之间转换数字bindec -- 二进制转换为...
• Numpy “bitwise_” 开头的函数是位运算函数： Numpy 位运算包括以下几个函数函数 描述 bitwise_and 对数组元素执行位与操作 ...按位反取 ...向左移动二进制表示的位 right_shift 向右移...
• 个参数是基数即进制，默认为10。 所以实际上<code>parseInt(3.75)这个代码，会先将3.75转为字符串<code>"3.75"</code>，然后再将它<code>parseInt成为3。 所以用parseInt方法整数&#...
• SGA采用二进制编码，染色体就是二进制位串，每一位可称为一个基因；如果直接生成二进制初始种群，则不必有编码过程，但要求解码时将染色体解码到问题可行域内。 遗传算法模拟“适者生存，优胜劣汰”的进化机制，...
• 一般游戏的存档，即数据的持久化...方案一：是把数据直接利用C#语言自带的序列化库库函数 system.serialize 做二进制格式的存取 方案二：Jason格式 方案三：protoBuff/ flatBuffer 这里是C#自带序列化函数的方案： ...
• ~（二进制反码） *（取消指针引用） +（一元加） -（一元求） ++（递增） –（递减） 转换运算符 后缀递增和递减运算符（++ 和 ––）在递增和递减中单独处理，下面会讲到。 以下规则适用于所有其他一元...
• 2.3 二进制数、位、字节与字 20 2.4 八进制 20 2.5 十六进制 20 2.6 原码 21 2.7 反码 21 2.8 补码 21 2.9 SIZEOF关键字 22 2.10 INT类型 22 2.10.1 int常量，变量 22 2.10.2 printf输出int值 23 2.10.3 printf输出...
• 5.显示屏数字可随时转换为十六进制、十进制、八进制、二进制形式进行计算，以上各种转换与计算结果可选择是否自动存入WINDOWS剪贴板，并可自动输出在其它程序窗口的当前光标位置，省去了按”Ctrl+V”的不便。...
• ## pickle 学习

千次阅读 2011-05-22 20:38:00