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

河北建设厅网站刷身份证整站外包优化公司

河北建设厅网站刷身份证,整站外包优化公司,个人做网站外包价格如何算,南昌网站seo费用符号扩展是指在将较小位宽的有符号整数转换为较大位宽的有符号整数时,保持数值符号不变的过程。符号扩展通常通过在高位填充符号位的值来实现。 符号扩展的规则如下: 如果最高位(符号位)是 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/523183.html

相关文章:

  • 牟长青 做网站推广的四个基本要点今日头条权重查询
  • 网站建设logo图片it培训班出来工作有人要么
  • 门户网站都有哪些内容东莞网络营销渠道
  • 网站建设 事项关键字c语言
  • 手机网站菜单网页怎么做西安官网seo技术
  • 2017一起做网店网站一个平台怎么推广
  • 做外贸的网站都有哪些站长工具国色天香
  • 建网站的价格cpu游戏优化加速软件
  • 电子商务网站建设 李洪心google play官网入口
  • 龙岩市城乡规划建设局网站百度应用市场
  • ps做图 游戏下载网站有哪些广告公司取名字参考大全
  • 桐柏网站建设海外建站
  • 网站推广传单广告模板
  • WordPress文章生成图片随州seo
  • 网站建设 分类深圳外贸网站制作
  • 做网站42类商标怎么选小类快速收录网
  • 快递网站怎么做的网络软文怎么写
  • 武汉企业制作网站青岛seo培训
  • 网站如何做中英文切换全国前十名小程序开发公司
  • 专业做模具钢的网站百度最新秒收录方法2022
  • 网站地图做法做第三方平台推广引流
  • 中国建设网官方网站客服电话创建属于自己的网站
  • 东莞品牌网站设计公司网站seo最新优化方法
  • 山东省和住房建设厅网站最新营销模式有哪些
  • 域名买完后如何做网站百度推广平台登陆
  • 郑州经济技术开发区属于什么区需要优化的网站有哪些
  • 郑州做网站企业汉狮百度推广年费多少钱
  • 安装完wordpress主题信息流优化师招聘
  • wordpress随机广告重庆网站快速排名优化
  • 长沙竞价网站建设报价精准防恶意点击软件