计算机内部整数的表示(二进制存储)

本文探讨了在16位机器上执行特定C++函数时整数溢出的现象,通过具体代码示例解释了当int类型变量超出其表示范围时的行为,并提供了编译及运行结果验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

10、在16位机器上跑下列foo函数的结果是(B)(阿里2014笔试题)
   void foo()
   {
       int i = 65536;
       cout << i<<”,”;
       i = 65535;
       cout << i;
   }
   A、-1,65535   B、0,-1     C、-1,-1    D、0,65535 
解析:16位机器的int型变量为16位


16位int的表示范围:-32768到32767 
65535(十进制) = 1111111111111111(二进制) 
65536(十进制) = 10000000000000000(二进制) 
上面是原码表示 (也是计算机内部补码的表示)
转换为原码,除了最高位,其它位取反,加一 
原码输出:分别为0和-1

验证:

#include<stdio.h>
int main()
{
    __int16 a=65536;
    __int16 b=65535;
    __int16 c=65535+3;
    printf("十六进制输出:%x %x %x\n",a,b,c);
    printf("十进制输出:%d %d %d\n");
}

输出:

十六进制输出:0 ffffffff 2
十进制输出:0 -1 2

 

转载于:https://www.cnblogs.com/XDJjy/p/3917837.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值