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

河北省建设厅办事大厅网站免费的黄冈网站有哪些平台

河北省建设厅办事大厅网站,免费的黄冈网站有哪些平台,企业网站建设 建立作用,网站订单系统模板符号扩展是指在将较小位宽的有符号整数转换为较大位宽的有符号整数时,保持数值符号不变的过程。符号扩展通常通过在高位填充符号位的值来实现。 符号扩展的规则如下: 如果最高位(符号位)是 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.dtcms.com/wzjs/558745.html

相关文章:

  • 站长网站推广广州营销型网站建设培训
  • 企业网站前台模板wordpress 远程
  • 怎么建立和设计网站wordpress 谷歌分析
  • 网站开发需要用到哪些资料建站合同
  • 营销策划方案设计的技巧百度seo优化分析
  • 徐州seo建站网站 用户体验
  • 百度竞价 百度流量 网站权重百姓国货app下载
  • 做商城外贸网站网站设计素材网站推荐
  • 辽宁建设局网站首页网站流量是怎么赚钱的
  • 免费制作微信小程序的网站万能导航网
  • 郑州网站推济南搜索引擎优化网站
  • 智能响应式网站anydrag建站专家网站建设系统
  • wap网站服务器学校网站建设方案及报价
  • 用织梦做网站有后台吗源码搭建教程
  • 网站推广引流最快方法省级建筑信息平台
  • 淮南网站制作免费咨询医院
  • 郴州网站建设网络推广平台安徽省建设法制协会网站
  • 建立新网站要多少钱开题报告旅游网站建设
  • 上海单位建设报建网站全国购物网站排名
  • 网站规划书包括哪些方面毕设做系统与网站
  • 做网站前期构架图网站建设调查通知
  • 男女做爰视频网站在线视频青岛网站制作网页
  • 成都网站建设吧衡水哪儿做wap网站
  • 做一网站要学些什么谷歌应用商店下载
  • 车辆保险网站三站合一网站营销
  • 昆明做网站ynlongtou专业做营销网站
  • 成都网站建设推广在做网站制作的摘要
  • 江门网站快速排名建站公司的服务内容
  • 网站设计好学吗cq设计网
  • 如何建设网站兴田德润怎么联系乔拓云建站平台