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

int的取值范围

原码(True form):原码是一种计算机中对数字的二进制表示方法,数码序列中最高位为符号位,符号位为0表示正数,符号位为1表示负数;其余有效值部分用二进制的绝对值表示。

反码(1's complement,在中国大陆称作反码,港台地区称为一补数):如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。

补码(2's complement,在中国大陆称作补码,港台地区称为二补数):如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在末位加1。

正数的原码、反码、补码都是一样的。

如果正数和负数都用原码表示,如下表所示:(int型数据占4byte,32bit位)

用原码来表示一个有符号数会带来两个问题:

第一个问题就是正负相加不等于零。如1+(-1),按照原码表示等于-2。

第二个问题就是有两个零存在,分别为00000000 00000000 00000000 00000000和10000000 00000000 00000000 00000000。

可见,原码不适合用来表示有符号数。

为了保证正负相加等于0,尝试用反码表示有符号数。正数的反码与原码一样,负数的反码是除了符号位原码按位取反。所以,用反码表示如下:

1+(-1)按照反码就是-0(32个1,最高位的1表示负号)。同理2+(-2)也等于-0。

使用反码解决了第一个问题,但是第二个问题仍然未解决。此时就要用到补码了。

正数的补码与原码一样,负数的补码是除了符号位原码按位取反+1,也就是反码+1,用补码表示如下:

用补码表示的话,-0就不存在了,-0就变成了0,此时就只有一个0了。-21474836477(-(2^31-1))减1就是-21474836478(-(2^31)),而-21474836477的补码减1就是10000000 00000000 00000000 00000000,因此-21474836478的补码是10000000 00000000 00000000 00000000。整型数字在计算机中用补码表示,取值范围是-(2^31)~(2^31-1),即-21474836478~2147483647 。
 

http://www.lryc.cn/news/474824.html

相关文章:

  • 图文检索(16):IDC: Boost Text-to-Image Retrieval via Indirect and Direct Connections
  • 企业数字化转型:重识、深思、重启新征程-亿发
  • 仓颉刷题录-字符串数字转换(一)
  • SpringBoot【实用篇】- 配置高级
  • liunx CentOs7安装MQTT服务器(mosquitto)
  • 【银河麒麟高级服务器操作系统】虚拟机lvm分区丢失现象分析及解决建议
  • Android 原子性类型都有哪些
  • MySQL(上)
  • ffplay 实现视频流中音频的延迟
  • CSDN资源变现
  • Rembg模型构建教程
  • 向量的基础知识和矩阵向量的坐标旋转
  • GeoSever发布图层(保姆姬)
  • AI 大模型的发展趋势是怎样的?
  • win10怎么关掉自动更新-小白必看
  • 大学城水电资源管理:Spring Boot解决方案
  • 躺平成长-运营日记-第三天
  • 智慧税务管理:金融企业报税效率与合规性提升
  • linux之网络子系统-用户层接收数据包之同步阻塞方案
  • 【天线&空中农业】花生霉变检测系统源码&数据集全套:改进yolo11-LVMB
  • 全志A133 android10 LVDS幅值调节
  • 弃用 RestTemplate,来了解一下官方推荐的 WebClient !
  • 西圣、倍思、品胜电容笔孰强孰弱?多维度对比测评三款平替电容笔
  • VS2022配置调试Qt源代码
  • Python 的 Pygame 库来开发一个游戏
  • diffusion model 学习笔记
  • 【C++题解】1967. 输出字符的ascii码
  • Java入门9——类和对象+this+构造方法
  • Django目录结构最佳实践
  • npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。