首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基础野:细说符号整数

本篇我们一起来探讨一下基础——符号整数表示方式和加减乘除运算。 Encode                                 符号整数可表示正整数、0和负整数值。...因此符号整数表示方式具有如下特点:   1. 可表示数值范围小; 2. 十进制表示数值范围与二进制表示数值范围元素是一一对应,两者可精确映射转换。...Sign-extended                           符号扩展运算用于在保持数值不变、符号位不变前提下,不同字长整数之间转换。  ...符号整数加法运算顺序:   1. 算术加法(由于采用补码对符号数进行编码,则是已经将负数转换为正数存储,所以含负数加法只需要直接执行算术加法即可);   2. 执行截断操作。  ...1101 +0110        10011,然后执行截断得到0011,发生正溢出得到 3 Subtraction                             符号整数减法运算顺序:

1.8K100
您找到你想要的搜索结果了吗?
是的
没有找到

PWN 无符号符号整型绕过漏洞

本文最后更新于 554 天前,其中信息可能已经有所发展或是发生改变。 无符号符号整型 数据元素类型:unsigned(无符号整型) C语言中,无符号整型数是不带正负表示符号整型数。...C语言在计算机里编译时数都是用二进制表示,如果最左边这一位不用来表示正负,而是和后面的连在一起表示整数,那么就不能区分这个数是正还是负,就只能是正数,这就是无符号整型数。...,写作signed int, 简写为int时效果相同,因为C语言默认为符号数。...漏洞存在 如果在无符号类型中输入-1会被判断成一个很大整数,从而会导致出现一些如果判断情况出现 例题分析 bjdctf_2020_babystack2 bjdctf_2020_babystack2...但是在read中作为参数时被转换为无符号整型(unsiged int),这个时候-1就会被识别成一个很大整数,从而导致栈溢出。

89620

正则表达式符号代表意义

可以匹配“do”或“does”中“do”。?等价于{0,1}。 {n} n是一个非负整数。匹配确定n次。例如,“o{2}”不能匹配“Bob”中“o”,但是能匹配“food”中两个o。...十六进制转义值必须为确定两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。 \num 匹配num,其中num是一个正整数。...\un 匹配n,其中n是一个用四个十六进制数字表示Unicode字符。例如,\u00A9匹配版权符号(©)。 \ 匹配词(word)开始(\)。...\( \) 将 \( 和 \) 之间表达式定义为“组”(group),并且将匹配这个表达式字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 符号来引用。...而正则表达式[0-9]{4,6} 匹配连续任意4个、5个或者6个数字

2.4K10

正则表达式符号应用举例

在上一篇文章中介绍了正则表达式匹配字符时所用到符号所代表意思。下面我来说一下具体例子。...先说一下他写法:在书写正则表达式时候最好能够分开来写,虽然说写在一起也可以,但是这样有时候会降低效率。...正则表达式规则不一定全都是符号,也可以是字符,例如"aa".matches("aa"); 返回值也是true "aaa".matches("a*");  其中*代表0个或多个a。...这行代码意思是说匹配规则为字符串0个或多个a字符组成。 "aaaa".matches("a?");其中?代表0个或1个a 。这行代码意思是说匹配规则为字符串0个或1个a字符组成。...其他例子我就不在一一列举了,如果大家对正则表达式符合代表什么意思,可以查看上一篇文章正则表达式代表意义

85110

整数存储:符号加绝对值表示法

整数存储:无符号表示法中谈到过,整数在计算机中有很多种存储方法,主要有下面三种:无符号表示法、符号加绝对值表示法和二进制补码表示法。这里我们讨论第二种方法:符号加绝对值表示法。...符号加绝对值表示法使用第一位(最高位)来表示符号:0表示正数、1表示复数,剩余位表示这个数绝对值,比如十进制7绝对值是二进制111,如果用4位长数据来表示7,那么+7为0111,-7为1111....这样4位长数据可以表示16个数,正负各占一半,正是+0~+7,负是-7~-0.注意:符号加绝对值表示法中有两个0,+0和-0....至此,整数表示法中符号表示法和符号加绝对值表示法都探讨完毕,剩下就是二进制补码表示法啦,下一篇文章我们接着讲。

1.3K20

FPGA 中符号数乘法

7系列及之前FPGA都是25x18DSP,UltraScale中是27x18,我们可以通过调IP Core方式或者原语方式来进行乘法操作。在里面可以设置符号还是无符号数乘法。 ? ?   ...clk ) begin if(rst) res <= 'b0; else res <= byte_a * byte_b; end   当然我们也要理解<em>有</em><em>符号</em>数乘法<em>的</em>原理...<em>有</em><em>符号</em>数乘法: reg [7:0] ubyte_a; reg [7:0] ubyte_b; (* use_dsp48="yes" *) reg [15:0] res_manul; always @ (...,我们知道,两个8bits<em>的</em>无<em>符号</em>数乘法,结果<em>的</em>位宽是16bits,但对于两个8bits<em>有</em><em>符号</em>数<em>的</em>乘法,只要两个数不同时为-128,即二进制0b1000_0000,那么输出结果<em>的</em>高两位都是<em>符号</em>位,我们只需要取低...因此,如果我们可以保证两个输入<em>的</em>乘数不会同时为<em>有</em><em>符号</em>数所能表示<em>的</em>负数最小值,那么乘法结果<em>的</em>高两位都是<em>符号</em>位,只取其中一位即可。

1.9K10

python中取整数方法(python中取整符号)

大家好,又见面了,我是你们朋友全栈君。 Python中 round() 两个参数,第一个参数是需要处理数,第二个参数是数位精度,默认为0。...round(3.4) ## 3 round(3.5) ## 4 而有时候会出现奇怪情况,比如:round(3.24, 1) #是四舍五入 ## 3.2 round(3.26, 1) #是四舍五入 ##...round(0.44, 1) #是四舍五入 ## 0.4 round(0.46, 1) #是四舍五入 ## 0.5 round(0.45, 1) #是四舍五入 ## 0.5 很多人说Python3中采用是...【四舍六入五留双】,上面的例子说明这种说法是不正确。...其实是因为:十进制小数在计算机内是通过二进制小数来近似,在舍和进两个选项中选择更接近一个 而当舍和进两个选项十分接近时,round 选择偶数选项 这就导致出现结果非常复杂了。

4.6K20

数字电路中符号

2,Verilog中有符号定义: 二进制数又分为 无符号数和符号数。若要定义符号类型数,需要加上关键词:signed 。不加关键词signed默认为无符号变量。...,只能表示0和正整数,在电路中按照原码存储(其实也可以理解为按照补码存储,只是正整数和0补码和原码相同)。...3,符号数与无符号数运算: 1.只有两个操作数都是符号数,才会把两个操作数都看作符号数计算,否则无论是符号数还是无符号数都会按照无符号数计算。...第二组(3,4,5,6行)变量定义为符号,此时,用符号数(补码)形式来解析输入输出数值,结果才正确。如果用无符号形式来解析输入输出数值,结果反而正确。...第三组(7,8,9,10行)变量定义为无符号,此时,用无符号数(原码)形式来解析输入输出数值,结果才正确。如果用符号形式来解析输入输出数值,结果反而正确。

90530

正则表达式「^」符号正确理解方式

「^」这个符号正则表达式应用相信是所有程序员都掌握, 因为它是正则表达式中最基础最常用知识点。...它在正则表达式中表示两种不同意义 01 表示匹配一段文本开头位置, 注意, 匹配是一个位置, 而不是具体某个字符,「 匹配位置」在正则表达式中有很重要意义。 ?...以上面这个正则表达式为例,一般情况下我们会使用两种思路去理解 不匹配「a」和「b」开头字符串 匹配除「a」和「b」以外所有字符串开头字符串 通过这两种思路去理解这个正则表达式, 最终答案都是一样...因此,正则表达式最重要核心理念就是「匹配」 另外,在程序设计中用到替换、切割、查找等操作, 都是程序类库封装功能, 和正则表达式本身半毛钱关系也没有。...理解「匹配」也就意味着对学习正则表达式入门。

1.1K30

python正则表达式部分特殊符号

\w - 匹配字母或数字或下划线或汉字(3.x版本可以匹配汉字,但2.x版本不可以) \s - 匹配任意空白符 \b - 在正则表达式中表示单词开头或结尾, 空格、标点、换行都算是单词分割....\d - 表示一个数字 ^ - 匹配字符串开始 $ - 匹配字符串结束 [ ] - 使用方括号,在正则表达式中, []表示满足括号中任一字符....但是在正则表达式中,’*’只表示数量,不表示字符. + - 与’*’类似,表示1或更多数量 ?...- 表示任意一个字符, 重复零次或一次 {} - 代替’+’,表示特定数量,限定长度 {n,} - 重复n次或更多次 {n,m} - 重复n到m次 正则表达式不只是用来从一大段文字中抓取信息,很多时候也被用来判断输入文本是否符合规范...(但汉字在python2.x里面可能会有问题) \d{15,18} 表示15到18位数字,可以用来检测身份证号码 ^1\d*x? 以1开头一串数字,数字结尾字母x,也可以没有。有的话就带上x。

2.1K10

由“符号数”和“无符号数”引发一个bug!

一筹莫展之际,老诸突然注意到我们之前忽略一个改动点,他把某个参数类型从int16_t改为uint_16t,即把原来符号16位整型改为无符号16位整型。...这样一来,这个变量只能表示非负数[0, 2^16-1],但算法过程中该值为负数是有意义符号数和无符号数 以int8_t和uint8_t为例,分别表示符号8位整型和无符号8位整型。...对无符号数uint8_t: 位全为1表示最大正数,为2^8-1=255 位全为0表示最小数,为0 对符号数int8_t: 其最高位(最左边位)是符号位,符号位为0表示正数,符号位为1表示负数,该位权重为...符号数转换为无符号数,会发生什么 C语言允许在各种㓊数字数据类型之间强制转换,把一个符号数赋给一个无符号数(或者反过来),结果是各个位不变,但会改变解释这些位方式。...老诸说,他使用是VS2019,如果代码里类型不严格匹配地方,那一整行代码下方都会有绿色波浪线提示。绿色波浪线让老诸很不爽,于是就按照提示把int16_t修改成uint16_t……

74430

一个符号数引发大案

做了这么多年软件开发,我发现一直没有搞懂符号数,不知道你懂不懂?...问题是这样,下位机程序往上位机发数据,发符号数,上位机这边用字节流接收之后就按每两个字节转化为一个double类型数据处理了,没有考虑符号位,也就是直接按无符号数处理了,导致发和收数据不一样...趁此问题,肯定要好好研究一下符号数和无符号数,以后再遇到此类问题就能避免不知不觉掉进坑里。...基本概念 想理解符号数、无符号数就需要先了解机器数、真值、原码、补码、反码这几个概念: 机器数:一个数在计算机存储形式是二进制数,我们称这些二进制数为机器数,机器数是符号,在计算机中用机器数最高位存放符号位...案例分析 在我案例中,下位机发送数据是从-8192 ~ +8192范围内整数,每个数用两个字节表示。

40210

【C语言笔记】关于符号数与无符号一些总结

、无符号数之间运算 符号数与无符号数之间运算,编译器会进行隐式类型转换。...(2)将有符号数转换为更大数据类型需要执行符号扩展,规则是将符号位扩展至所需位数,即符号位为0时在开头添加0至所需位数,符号位为1时在开头添加1至所需位数。...此外,还需注意,对于一个signed char类型数据,0xff代表是-1,因为整数在内存中是以补码形式存储。 正数原码、反码、补码都相等。...其中,-128最为特殊,需要特别记住,其不遵循传统由补码计算原码方法。 以上就是关于符号数与无符号两点总结:(1)符号数与无符号数之间运算,编译器会进行隐式类型转换。...(2)符号数、无符号数转换为更大数据类型。

3.7K20
领券