当前位置:   article > 正文

uchar类型加减运算

uchar

1、uchar 类型只能保存0-255的数字。超过了会溢出,溢出后会从0开始继续累加。所以小心使用

uchar u;

u +=u;

溢出了也不会提醒你

2、

计算机CPU只有加法逻辑运算器,对于减法运算,是使用两个数的补码进行加法运算。

  1. 50-100=
  2. 50的二进制是:   00000000|00000000|00000000|00110010
  3. 50的补码是:     00000000|00000000|00000000|00110010(整数的补码不变)
  4. 100的二进制是:  00000000|00000000|00000000|0110010
  5. -100的补码是:   先减1100的二进制数 - 1
  6. =  00000000|00000000|00000000|01100011
  7. 按位取反:00000000|00000000|00000000|01100011
  8. = 11111111|11111111|11111111|10011100
  9. (50的补码) + (-100的补码)是:00000000|00000000|00000000|00110010 +
  10. 11111111|11111111|11111111|10011100 
  11. = 11111111|11111111|11111111|11001110
  12. 如果是无符号数,二进制转十进制:
  13. 11111111|11111111|11111111|11001110 = 4294967246
  14. 如果是有符号数,二进制转十进制:
  15. 11111111|11111111|11111111|11001110首位是1表示负数,
  16. 先减111111111|11111111|11111111|11001101
  17. 按位取反:00000000|00000000|00000000|00110010
  18. 有符号数结果:  - 1*2^5 + 1*2^4 + 1*2^1=-50
  1. 补码:
  2. 正数的补码,是其本身。
  3. 负数的补码,就用它的正数,减一取反,即可得到补码。
  4. 如,已知:+9 补码是:0000 1001
  5. 下面求-9 补码:
  6. 先减一:0000 1001 - 1 = 0000 1000
  7. 再取反:1111 0111
  8. 所以有:-9 补码 = 1111 0111

 

3、

50-100=-50, -50的二进制是补码表示为50取反+1,

50:   00000000|00000000|00000000|00110010 
取反:  11111111|11111111|11111111|11001101 
加1:   11111111|11111111|11111111|11001110 就是无符号数的 4294967246

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/44362?site
推荐阅读
相关标签
  

闽ICP备14008679号