【计组】2.1.3.带符号的整数的表示和运算

带符号的整数的表示和运算

名词解释

  • 带符号整数:即 “整数”,-2、-1、0、1、2、3…
short a = 1;	//带符号整数(短整型)
int b = 2;		//带符号整数(整型)
  • 带符号整数可用 原码、补码、反码 表示,同一个含义,相当于用不同的编码方式表示

记忆点

  1. 原码:
    • 符号位 0/1 表示 正/负,剩余的数值位表示真值的绝对值
    • 若机器字长为 n+1 位,带符号整数原码表示范围是 −(2n−1)≤x≤2n−1-(2^n-1) \leq x \leq 2^n-1(2n1)x2n1
    • 真值 0 有两种形式:+0 = -0,[+0]原=0,0000000[+0]_原=0,0000000[+0]=0,0000000[−0]原=1,0000000[-0]_原=1,0000000[0]=1,0000000
    • 缺点:符号位不能够参与运算,需要设计复杂的硬件电路,费钱!
  2. 补码:
    • 可参与符号为的运算
  3. 负数原码和补码互相直接转换
    • 从右往左找到第一个1,这个1的左边所有数值位按位取反
  4. 补码的减法:[A]补−[B]补=[A]补+[−B]补[A]_补-[B]_补=[A]_补 + [-B]_补[A][B]=[A]+[B]
  5. 负值补码转换规则,如:[19]补=0,0010011,[−19]补=1,1101101[19]_补=0,0010011,[-19]_补=1,1101101[19]=0,0010011[19]=1,1101101
    • 全部位按位取反,再末尾+1
    • 也可以从右往左找到第一个1,这个1的左边所有数值位按位取反

原码表示

即人类能够理解的数值,记作 x=−19,[x]原=1,0010011x=-19, [x]_原=1,0010011x=19,[x]=1,0010011,若未指明机器字长也可以写成[x]原=1,10011[x]_原=1,10011[x]=1,10011
在这里插入图片描述

原码、反码、补码转换

原码->补码:正数不需要做任何变换,负数则符号位不变,取反+1
在这里插入图片描述

<think>我们正在处理一个关于HTTP400 BadRequest错误的问题,特别是针对GET请求。用户提到使用jQuery Ajax时遇到了这个问题。根据提供的引用,我们可以总结出一些常见原因。引用[1][2]提到了400错误,但没有明确区分GETPOST。引用[3][4]则指出,当使用POST请求时,如果请求体不是正确的JSON格式(特别是当设置了contentType为application/json时)会导致400错误。但是,用户的问题是关于GET请求的。对于GET请求,通常不会携带请求体(body),所以问题可能出现在URL或请求头(headers)上。常见的GET请求400错误原因包括:1.URL无效:例如,URL中包含了非法字符,或者参数格式不正确。2.请求头问题:例如,请求头中包含了服务器无法理解的内容。3.参数问题:GET请求的参数是附加在URL后面的,如果参数格式不正确(如未转义特殊字符)可能导致服务器无法解析。另外,引用[3]提到,当使用@RequestBody(在Spring MVC中)时,要求请求体必须是JSON,但如果是GET请求,通常没有请求体,所以这个原因不适用于GET。因此,我们需要将重点放在URL请求头。根据引用[4],在发送请求时,如果设置了contentType为"application/json",但实际发送的数据不是JSON字符串,也会导致400错误。但是,GET请求通常不应该设置contentType(因为GET没有请求体),如果设置了,可能会引起服务器的不正确处理。因此,针对GET请求返回400错误的原因,我们可以总结如下:1.**URL格式错误**:GET请求的参数是附加在URL中的,如果参数中包含特殊字符(如空格、中文等)没有进行正确的URL编码,就会导致服务器无法解析该URL。2. **请求头设置不当**:例如,设置了本不该设置的Content-Type头。因为GET请求没有请求体,所以设置Content-Type是不必要的,甚至可能让服务器期望得到一个请求体,从而引发错误。3.**参数缺失或格式错误**:服务器可能要求某些参数必须存在,或者参数必须符合一定的格式(如日期格式、数字格式等),如果不符合,服务器会返回400错误。4.**请求头过大**:有时,请求头的大小超过服务器限制也会导致400错误。下面,我们根据上述分析,给出一个结构化的回答,并生成相关问题。</think>### HTTP 400 Bad Request GET请求错误原因分析 HTTP 400错误表示服务器无法理解客户端发送的请求,常见于GET请求的原因包括: 1. **URL格式错误** - URL包含非法字符(如空格、中文未编码) - 参数格式错误:`example.com?param1=value1&param2=value2` - 解决方案:使用`encodeURIComponent()`对参数编码 ```javascript // 错误示例 $.get("/api?name=张三&age=25") // 正确示例 $.get(`/api?name=${encodeURIComponent("张三")}&age=25`) ``` 2. **请求头问题** - 缺失必要头信息(如`Accept`) - 错误设置`Content-Type`:GET请求通常不需要此头 ```javascript // 错误示例(GET请求设置Content-Type) $.ajax({ url: "/api", type: "GET", contentType: "application/json" // 可能引发400错误[^3] }); ``` 3. **参数类型不匹配** - 服务器期望数字但收到字符串 - 日期格式无效:`2023-01-01` vs `01/01/2023` - 解决方案:检查API文档确保参数类型正确 4. **服务器端验证失败** - 必填参数缺失 - 参数超出允许范围(如`age=150`) - 跨域请求未处理:需配置CORS头[^1] 5. **缓存问题** - 浏览器缓存了错误请求 - 解决方案:添加时间戳参数 ```javascript $.get(`/api?timestamp=${new Date().getTime()}`) ``` **调试建议**: 1. 使用Chrome开发者工具检查Network标签 2. 复制完整请求URL在Postman中测试 3. 查看服务器日志获取详细错误信息 4. 对比成功请求失败请求的差异 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小易

你的鼓励将是我持续写作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值