int和unsigned的區別,signed和unsigned轉換方法C語言

 2023-12-25 阅读 87 评论 0

摘要:一、signed轉換為unsigned 當int(16bit)時 signed類型整數,共16位。第一位為符號位,正數為0、負數為1,剩下15進行編碼,存儲范圍為-215到215-1,即-32768到32767。 unsigned類型整數,16位全部用來編碼,存儲范圍為0到216-1

一、signed轉換為unsigned
當int(16bit)時
signed類型整數,共16位。第一位為符號位,正數為0、負數為1,剩下15進行編碼,存儲范圍為-215到215-1,即-32768到32767。
unsigned類型整數,16位全部用來編碼,存儲范圍為0到216-1,即0到65536。
在這里插入圖片描述
負數轉化
因為負數一定會超出取值范圍,所以在某些語言中將負數賦值為unsigned類型是非法的。在合法情況下,signed轉換unsigned方法如下

  1. 取負數絕對值
  2. 取負數絕對值二進制碼
  3. 取反碼
  4. 反碼最低位+1

如-2879(16bit),取絕對值為2879
二進制:0000 1011 0011 1111
取反碼:1111 0100 1100 0000
反碼+1:1111 0100 1100 0001
轉換為16進制為F4C1

補充
在這里插入圖片描述
signed是符號擴展,用符號位填充;unsigned是零擴展,高位全部置零

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/196866.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息