今天舍友问了我个C语言问题,问题是这样的:以给unsigned char类型赋以负数值,得到的结果是什么?这里涉及到了负数在内存里面是如何存储的。实际上负数在内存中是使用补码存储的,为什么要以补码来存储呢?这是个规定,但是为什么这样规定呢?把负数用补码来记,这样正数与负数加的时候,只要直接相加就可以得到结果。负数与负数加的时候,只要符号位不搞错,其余部分直接相加。这样子运算就很方便。
回到舍友的问题,C语言你以%d的格式输出unsigned char(-1)的话,-1在内存中的存储是11111111,即-1的补码形式,如果当无符号数即正数来处理的话,得到的值是255。所以从内存中的存储考虑这个问题就不会出错了。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务