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

本文解释了无符号整数的概念,涉及字长限制、通用寄存器处理、位权计算、加法和减法规则,以及溢出处理方式。重点介绍了如何在机器字长为8位时进行有效操作。

进位计数制

名词解释

  • 无符号整数:即“自然数”,0、1、2、3、4…
unsigned short a = 1; 	// 无符号整数 短整型,2Byte
unsigned int b = 2;		// 无符号整数 整型,4Byte

记忆点

  1. 若机器字长为 8,则通用寄存器只能一次性放 8 位,溢出位抛弃,只保留低 8 位
  2. 无符号整数没有符号位,第 i 位位权是 2i-1
  3. n bit 无符号整数可表示 0 ~ 2n-1
  4. 最小的数全0,最大的数全1
  5. 无符号整数加法:从最低位开始,按位相加,并往更高位进位,溢出位抛弃,只保留低 8 位
  6. 无符号整数剑法:被减数不变,减数全部位按位取反并末位+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、付费专栏及课程。

余额充值