首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏python3

    课时43:魔法方法:算术运算2

    当左操作数不支持相应的操作时被调用) __ror__(self, other) 定义按位或操作的行为:| (当左操作数不支持相应的操作时被调用) 不难发现,这里的反运算魔法方法跟上节介绍的算术运算符保持一一对应 Nint(5) >>> b = Nint(3) >>> a + b 8 >>> #由于a对象默认有__add__()方法,所以b的__radd__()没有执行 >>> #这样就有了 >>> 1 + b -2 __sub__(self,other) >>> a = Nint(5) >>> 3 - a 2 所以对于注重操作数顺序的运算符(例如减法、除法、移位),在重写反运算魔法方法的时候,就一定要注意这些顺序问题了

    51320发布于 2020-01-19
  • 来自专栏一个程序员的修炼之路

    溢出场景的分析(2)

    之前一篇文章<<一种栈溢出的场景分析和建议>>中,本人分享了如何查找程序Crash的函数调用栈,然后通过代码审查找到栈溢出的原因。 那么针对上面这两点,都需要一个东西去做辅助分析,那就是触发栈溢出的输入内容(这的所谓输入内容不是指用户在交互界面输入,而是指触发这个栈溢出的数据),无论是自己用这个输入内容来调试栈溢出的触发逻辑,或者是交给第三方库的支持方 实际真实的工程代码也是类似,并不是栈溢出问题必现,而是在特定的情况下才会触发,这也是为什么本文强调的是如何获取触发栈溢出的输入数据如此重要,因为调试问题离不开它。 _imp_NtWriteFile (00007fff`d11f2fa8)] ds:00007fff`d11f2fa8={ntdll! __scrt_common_main_seh+0x10c [d:\agent\_work\2\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl

    71430发布于 2021-08-06
  • 来自专栏从零开始的linux

    算术运算

    # num1=3 # num2=13 加法 # let sum=$num1+$num2 # echo $sum 16 乘法 # echo $[$num1*$num2] 39 除法 # echo $(($num2/$num1)) 取余 # echo $(expr $num2 % $num1) 增强型赋值 # count=1 # let count+=1 # echo $count 2 # let

    67740发布于 2018-04-25
  • 来自专栏HAUE_LYS'Blog

    最长算术

    Original Link 思想: 双指针。 快指针 i 作为某一连续区间的右端点,慢指针 j 作为该区间的左端点; 初始化设差值为 t = a[1] - a[0],每当 a[i] - a[i - 1] == t 时更新区间, 更新区间时,i 不断右移,直到不满足 a[i] - a[i - 1] == t 为止,此时维护最长连续区间的值 res, 更新完毕后,还需要更新 t = a[i] - a[i - 1],再将 i -- 还原,重新寻找新的差值为 t 的区间。 代码: #include <bits/st

    57540编辑于 2023-02-21
  • 来自专栏吾生也有涯IT也无涯

    堆栈溢出渗透实战-part2

    还用老套路,利用edb-debugger分析程序运行的流程,找到可溢出的部分。 打开edb后,发现除了调用系统函数外,还调用了一个叫levelTwo!hello的函数,在此处设置端点并执行。 ? hello函数的内容,这里调用了strcpy函数,从昨天的内容可知,strcpy没有对数据长度进行检测,过长的数据会导致越界,将其它的数据覆盖,看来这里就是可溢出的部分了。 执行下一条指令,查看栈内容,栈顶地址为ffffd2ec,值为56556286,没问题 ? 继续执行到printf之后,ret之前的断点,查看ffffd2ec处的值,已经变成了41414141,说明溢出已经成功,返回地址已经被修改 ? 执行一下,已经获得了root的shell,进入/home/level2目录,得到了level2的密码和levelThree的可执行文件 ?

    82610发布于 2019-07-25
  • 来自专栏图像处理与模式识别研究所

    算术编码

    data_size)-math.log2(A_up))#计算编码长度 bin_C=dec2bin(C_up, C_down,L) amcode=bin_C[0:L]#生成编码 return plt.figure() plt.suptitle('算术编码') plt.subplot(1,2,1) plt.title('原图') plt.imshow(cv2.cvtColor(org_img,cv2.COLOR_BGR2RGB)) plt.subplot(1,2,2) plt.title('解压后 ') plt.imshow(cv2.cvtColor(dep_img,cv2.COLOR_BGR2RGB)) plt.show() if __name__=="__main 保存编码文件为: Lena02.am 压缩比(原图大小除以压缩后大小) 100.057% 保存解压文件: Lena02_am.png 误码率: 0.000% 算法:算术编码是一种无损数据压缩方法,也是一种熵编码的方法

    52540编辑于 2022-05-29
  • 来自专栏pwn

    【pwn-栈溢出】— ret2text

    ret2text 0x1、程序信息 描述 内容 程序名称 pwn1 图片 0x3、检测漏洞函数 1.将程序载入到ida中,找到main函数,下方有一个vuln函数,跟随进去看看 图片 2.漏洞利用点在scanf函数上,未控制缓冲区大小,输入超过16个字符缓冲区将溢出 图片 0x4、确定偏移量 1.在上面的vuln函数中我们可以看到,v1变量与rbp的偏移量是0x10,也就是16字节 2.为了验证IDA帮我们分析出来的这个偏移量是正确的,我们决定用动态调试方法进行确定 图片 shell 图片 2.看它的反汇编复制它的地址(0x400686),作为我们溢出后返回的位置 图片 0x6、编写利用脚本 #! Input:",payload) # 获取交互式shell环境 io.interactive() 0x7、调试观察 1.我们在vuln函数的leave指令处下一个断点,准备动态调试观察栈信息 图片 2.

    1.8K81编辑于 2023-03-24
  • 来自专栏码神随笔

    算术基本定理

    我仔细看了2个题目都比较水,所以我就简单写了一下,不要建议哦,彦祖们 完美数 英雄哥,在博客中的解法就是一个完美数的解法,哈哈 bool checkPerfectNumber(int num){ num == 1) { return false; // (1) } for(i = 1; i*i <= num; ++i) { // (2) return sum == num; } 丑数的判断 这个是前几天的一个题,唉,一天的水题,麻烦加大难度 bool IsChou(int numbur) { while (numbur % 2 == 0) numbur /= 2; while (numbur % 3 == 0) numbur /= 3; while (numbur % 5 == 0) numbur /= 5;

    42920编辑于 2022-12-13
  • 来自专栏蓝天

    算术运算指令

    作者: 来源: 发布日期:2007-04-25 算术运算指令是反映CPU计算能力的一组指令,也是编程时经常使用的一组指令。它包括:加、减、乘、除及其相关的辅助指令。 Exchange and Add) 指令的格式:XADD Reg/Mem, Reg      ;80486+ 受影响的标志位:AF、CF、OF、PF、SF和ZF 指令的功能是先交换两个操作数的值,再进行算术 例5.3 已知有二个32位数d1和d2(用数据类型DD说明),编写程序片段把d2的值加到d1中。 解:32位数d1和d2在内存中如下所示。 MOVDX, word ptr d1+2;(DX,AX)构成一个32位数据 ADDAX, word ptr d2;低字相加 ADCDX, word ptr d2+2;高字相加。 在低字相加时,有可能会产生“进位” MOVword ptr d1, AX;低字送给d1的低字 MOVword ptr d1+2, DX;高字送给d1的高字 方法2:用32位寄存器编写程序 MOVEAX

    71240发布于 2018-08-07
  • 来自专栏米扑专栏

    Linux Shell 算术运算

    米扑博客 总结了 Bash shell 的算术运算有四种方式: 1、使用 expr 外部程式 加法 r=`expr 4 + 5` echo $r 注意! 的 3 次方) r=$(( 2 ** 3 )) r=$[ 2 ** 3 ] echo $r 注:expr 沒有乘幂 4、使用let 命令 加法: n=10 let n=n+1 echo $n #n=11 shell 有四种算术运算方法,但并不是每一种都是跨平台的,建议使用expr。 {max=0} {if($2>max) max=$2 fi};END {print max}'55$ cat test.txt | awk 'BEGIN {min=999999999} {if($2< 运算结果: 3.333333 PS:shell的内部算术运算符无法处理浮点数,所以当需要处理浮点数是,要用到外部工具(如awk)

    7.6K50发布于 2018-05-17
  • 来自专栏我在本科期间写的文章

    3.5 算术运算指令

    3.5 算术运算指令 1. 基本算术运算指令 ADD 指令 格式: ADD 目的, 源 作用: 对两个操作数进行加法运算,并将结果存入目的操作数中。 2. 比较指令 CMP 指令 格式: CMP 目的, 源 作用: 对两个操作数进行比较,但不返回结果,只是将运算过程和结果反映在标志位上。 标志位设置 CMP 指令会影响以下标志位: ZF (Zero Flag): 如果 operand1 和 operand2 相等,ZF 被设置(置1)。 SF (Sign Flag): 如果结果为负数(operand1 < operand2),SF 被设置。 OF (Overflow Flag): 如果发生有符号溢出,OF 被设置。 CF (Carry Flag): 如果 operand1 小于 operand2,CF 被设置。 3.

    48410编辑于 2024-09-05
  • 来自专栏方法论

    云计算术

    2.云计算 一种计算资源交付模型,其中集成了各种服务器、应用程序、数据和其它资源,并通过 Internet 以服务的形式提供这些资源。通常对资源进行了虚拟化。 如果组织使用私有云达到其 100% 的资源容量,溢出的流量将导向到公有云,这样就不会出现服务中断。 除了灵活性和自助式功能之外,云爆发的关键优势在于节约成本。 第 2 种云计算类型是平台即服务 (PaaS),它为开发人员提供构建和托管 Web 应用程序的工具。 当计算和处理需求波动时,混合云计算使企业能够无缝地将其内部部署基础架构扩展到公共云以处理任何溢出,而无需让第三方数据中心访问其全部数据。 第 2 类是网络虚拟化,它旨在将网络带宽拆分为独立的通道,然后分配给特定的服务器或设备。 第 3 类是软件虚拟化,它将应用程序与硬件和操作系统分离。

    1.8K41发布于 2020-05-20
  • 来自专栏前端儿

    小学生算术

    小学生算术 描述 很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。 =0) { temp = 0; count = 0; arr[0] = a /100; arr[1] = a /10 %10; arr[2] = a % 10; brr[0] = b /100; brr[1] = b /10 %10; brr[2] = b % 10; for(int i =2;i>=0;i-

    64930发布于 2018-09-03
  • 来自专栏OpenCV与AI深度学习

    图像的算术操作

    而很多时候并不能仅通过改变像素点来进行图像的操作,为此我们需要学习关于图像的算术操作。 1.图像加法 对于两张相同大小的图像,可以使用 cv2.add 函数对它们进行加法运算。 2.OpenCV 与 NumPy 模块算术加法的区别 从第 1 章中我们就已经知道,图像在程序中是以矩阵的形式保存的,因此我们也可以用矩 阵加法来进行两张图像像素点的相加。 但两者在某些情况下会产生不同的结果,原因在于 OpenCV 和 NumPy 模块处理溢出的方 法不同。溢出是什么呢? OpenCV 处理溢出的方法是饱和操作,而 NumPy 模块处理溢出的方法是模操作。 这 里使用了两张差别较大的图像来进行代码的测试,如图 1 和图 2所示。现在我们通过 cv2.add 函数对这两张图像进行图像的算术加法,示例代码如下。

    95711编辑于 2021-12-08
  • 来自专栏全栈程序员必看

    cocos2dx 编写shader 遇到 溢出问题

    比如 int ,char 会 溢出,float 会 有 溢出 以及 精度 不准确的 情况。 所以 我们 在 开发 中 须要 特别 注意 这些事。 会 打印 编译 错误的 log (2) 浮点型 溢出问题,这样的 问题 会 比較 难解决,我也是 慢慢试出来的 首先 看看 shader 精度的 一些 最低范围 以下 是我的 部分 shader 源代码 ; uniform float u_radius; uniform vec2 u_touchPos; uniform vec2 u_bgSize; uniform sampler2D CC_Texture0 我预计 它 的 形式 大致 是 这种 float distance(vec2 pos1, vec2 pos2){ vec3 sub = pos1 – pos2; return sqrt(sub.x * 代码), 所以 float 的 范围 在-16384 ~ 16384 之间, 当 两个 百位数 相乘 非常有可能 造成 溢出

    57310编辑于 2022-07-08
  • 来自专栏算法工程师的学习日志

    MATLAB-算术运算

    MATLAB的算术运算有两种不同类型:1)矩阵算术运算;2)阵列算术运算。 MATLAB矩阵算术运算与线性代数中的定义相同:执行数组操作,无论是在一维和多维数组元素的元素。 举例说明 下面的例子显示使用标量数据的算术运算符。 a b x = 7; y = 3; z = x ^ y 运行该文件,产生结果如下: c = 30 d = -10 e = 200 f = 0.5000 g = 2 z = 343 MATLAB算术运算功能 除了上述列举的一些算术运算符,MATLAB 中还拥有以下的命令/功能: 函数描述uplus(a)一元加号;增加量aplus (a,b)相加;返回 a +

    1.2K30编辑于 2022-07-27
  • 来自专栏剑指工控

    模拟量处理方式介绍(2算术平均滤波法

    2 引言: 在现实生活和工程领域中,我们通常会遇到采集到的数据受到噪声或随机干扰的影响,这些噪声会对后续处理和分析产生负面影响。为了减小噪声的影响,滤波技术被广泛应用于数据处理和信号分析领域。 其中,算术平均滤波法是一种简单而有效的滤波方法。 3 算术平均滤波法原理: 算术平均滤波法的原理非常简单。它通过连续取 N 个采样值并对其进行算术平均运算来得到滤波后的结果。 4 算术平均滤波法优缺点: 算术平均滤波法具有以下优点: 适用于对一般具有随机干扰的信号进行滤波。可以有效平滑信号,减小噪声的影响。 算术平均滤波法占用的内存较多,特别是在采样次数较大的情况下。 算术平均滤波法的速度较慢,特别是在处理大量数据时会增加计算负担。 5 算术平均滤波法应用场景: 平滑静态信号:算术平均滤波法可以用来平滑慢速变化的信号,去除信号中的噪声和突变。

    98140编辑于 2023-08-31
  • 来自专栏coderhuo

    移位溢出

    排查发现原来是计算的时候移位导致了溢出2位) ‭15837691904对应的二进制:001110110000000000000000000000000000(30208左移19位,无溢出)‬‬‬ 错误的代码中虽然进行了强制类型转换,但是转换发生在移位后 ,所以无法避免溢出。 正确的代码先进行了类型提升,然后再移位,可以避免溢出。 这点从汇编代码中可以看出。 16.04.4) 5.4.0 20160609" .section .note.GNU-stack,"",@progbits 可以看出, 错误代码调用了32位算数左移指令sall, 正确代码调用了64位算术左移指令

    1.7K20发布于 2018-08-29
  • 来自专栏E条咸鱼

    CVE-2017-7529 Nginx整数溢出漏洞分析2

    可以看到做了一定的限制 图一修改,防止因为end的问题,导致 content_length-end后的结果为负数,最后的结果无论如何都是0,而不会是负数了,对cache文件的读取也只能从0开始 图二修改,防止溢出后小于了 size后绕过判断 正常情况下,如果我们 传入一串完整的range,那么他会检查 start,保证不会溢出为负值 ? 因为前面算的end的值是大于文件长度的,所以在这里会被强行等于原始文件的长度,那么到后面计算的时候 就会变成了 7877-(-600)=7877+600=8477 因为需要整数溢出,所以最后size的值得是 0x8000000000000000,所以我们给的第二个range值要在这个基础上计算 那么 0x8000000000000000-8477的值就是range2的值了 这里计算出来的结果是 9223372036854767331‬ 所以就相当于是 range2+range1,最后的值刚好就能整数溢出了 ?

    1.1K10发布于 2020-08-17
  • 来自专栏计算机工具

    溢出漏洞,缓冲区溢出漏洞

    溢出漏洞是一种计算机程序的可更正性缺陷。 溢出漏洞的全名:缓冲区溢出漏洞 因为它是在程序执行的时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。 它一般是由于编成人员的疏忽造成的。 具体的讲,溢出漏洞是由于程序中的某个或某些输入函数(使用者输入参数)对所接收数据的边界验证不严密而造成。 根据这个原理,恶意使用者就可以构造出溢出程序。

    54810编辑于 2024-12-17
领券