0xffffffff是多少?

  (1)正数的补码与原码相同;
  (2)负数的符号位为1,其余位为该数绝对值的原码按位取反,然后整个数加1,即为其补码。
   (总的来说:补码=原码取反+1,只不过负数带有符号位需特殊考虑。。。)
---------------------------------------------------------------------------------------------------------------------------------

0xffffffff是多少?

0xffffffff表示的是一个十六进制数 

1.将其转换为十进制数 
    0xffffffff=16x10^7+16x10^6+...+16x10^0=4294967295 

2.将其转换为二进制数 
    十六进制转换为二进制就是直接把每位转换成二进制就可以了 
    f(15)变成二进制:1111,则 
    0xffffffff = 1111 1111 1111 1111 1111 1111 1111 1111 (8个F的二进制形式, 一个F占4个字节 ) 
    即32位数都是1的二进制数

0x代表16进制,后面是数字,十进制是4294967295

#include <stdio.h>
int main()
{
	int i =0xffffffff;
	unsigned int j = 0xffffffff;
	printf("i: %u  %d\n",i ,i);
	printf("j: %u  %d\n",j ,j);
    printf("-1: %u\n",-1); 
	return 0;
}
/*
我擦,终于想通了带符号的int变量i当以“%u”(无符号格式)输出时,把最高位符号位给算进去了
所以 i和j “%u”的相同。
-1的补码,计算机中符号数以补码形式存放即:
 1111 1111 1111 1111 1111 1111 1111 1111 (32位)
 当以无符号输出时也是: 4294967295
*/

有图有真相:


int、unsigned int、long int、long long 类型的最大值和最小值:
#include <limits>
#include <iostream>
using namespace std;

int main (){
  cout<< numeric_limits<int>::max() << endl;
  cout<< numeric_limits<unsigned>::max() <<endl; 
  cout<< numeric_limits<long int>::max() <<endl; 
  cout<< numeric_limits<long long>::max() <<endl;
  cout<<"-----------------------------"<<endl;
  cout<< numeric_limits<int>::min() << endl;
  cout<< numeric_limits<unsigned>::min() <<endl; 
  cout<< numeric_limits<long int>::min() <<endl; 
  cout<< numeric_limits<long long>::min() <<endl;
  return 0;
} 


  • 19
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值