当前位置: 首页 > news >正文

一流的嘉兴网站建设广州30万人感染

一流的嘉兴网站建设,广州30万人感染,wordpress批量分类,商城网站建设需要符号扩展是指在将较小位宽的有符号整数转换为较大位宽的有符号整数时,保持数值符号不变的过程。符号扩展通常通过在高位填充符号位的值来实现。 符号扩展的规则如下: 如果最高位(符号位)是 0(表示正数)&a…

符号扩展是指在将较小位宽的有符号整数转换为较大位宽的有符号整数时,保持数值符号不变的过程。符号扩展通常通过在高位填充符号位的值来实现。

符号扩展的规则如下:

  1. 如果最高位(符号位)是 0(表示正数),则在高位填充 0。
  2. 如果最高位是 1(表示负数),则在高位填充 1。

例如,假设一个 8 位的 char 类型val值为 0xFF,它在内存中的二进制表示是 11111111。这个值在 char 中表示 -1。如果我们将其转换为 32 位整数,符号扩展会将其转换为 11111111111111111111111111111111,这仍然是 -1 的二进制表示。

那么这就会导致一个问题,就是当发生unsigned和signed不同大小的整型类型之间的转换时,可能会出现结果不一致的问题,例如:

如下是一个一次性读取24位数值的函数:

uint32_t readU24(const char* p) 
{uint32_t value = 0;value |= (p[0] << 16);value |= (p[1] << 8);value |= p[2];return value;
}

当传入数据为char data[] = {0xFF, 0x01, 0x02};时,最终输出的结果为 0xFFFF0102,而不是预期的0xFF0102,这是因为在执行value |= (p[0] << 16);语句时,p[0]为0xFF,左移16位之后是0xFF0000,在value对其进行或运算时,会由于char和uint32_t之间的类型发送符号拓展,填充高位的值’1’,那么执行完这条语句之后的value值则为:0xFFFF0000。所以,value的值已经与预期结果不符了。

对应的解决方案有多种,这里就不写了,简单叙述:可以新建一个unsigned char的指针指向p,避免符号拓展,或者将参数p改为unsigned char*等。

所以,最好就是不要让不同整型(有无符号)之间的指针进行操作,保持统一,避免出现bug。

http://www.cadmedia.cn/news/14199.html

相关文章:

  • 网络营销策略相关理论威海seo优化公司
  • 太原做网站baidu百度推广怎么注册账号
  • 简单的房源展示网站开发单页应用seo如何解决
  • 响应式网站的优点优化营商环境的金句
  • 沧州网站改版优化百度小说风云榜总榜
  • 武汉最好的网站建设公司软件测试培训班多少钱
  • 武汉网站优化公司seo优化官网
  • 巩义网站建设案例课堂app推广方案
  • 中交路桥建设有限公司网站百度seo外链推广教程
  • python网站开发pdf腾讯企业邮箱登录入口
  • 重庆大山建设有限公司网站百度全网营销
  • 鑫牛元网站建设吉林网站推广公司
  • 淄博网站建设铭盛信息seo的概念是什么
  • wordpress地方门户新手怎么做seo优化
  • 网站设计做微信发现界面农夫山泉软文300字
  • 傻瓜式建站平台外贸营销型网站制作公司
  • 珠海网站制作套餐优化搜索曝光次数的方法
  • 免费流量优化网站排名方法
  • 深圳地铁公司网站友链交换网站源码
  • 一键生成论文的网站手机百度下载app
  • 南宁网站建设公司哪个好什么是seo优化推广
  • 佛山企业网站设计制作网络营销成功案例分析
  • 公司要建设网站需要那些程序互联网销售是什么意思
  • 浙江省和住房建设厅网站中国seo第一人
  • 不建议做软件测试seo的定义
  • 人才网站查询档案百度竞价
  • 阿里云搜索引擎入口seo优化的常用手法
  • 凌点视频素材网百度快照怎么优化排名
  • 网站开发建设技术规范书高端婚恋网站排名
  • 合肥网站建设优化百度竞价推广常用到的工具