数据类型 int char默认是有符号型的
加上unsigned后就变成了无符号型
unsigned的类型只能是整型和字符型
#include <iostream>
using namespace std;
int main(){
int a=-1;
cout<<a<<endl;
unsigned int i=-1;
cout<<i<<endl;//输出4294967295 4294967295=4294967296-1 4294967296=2^32
unsigned char c=-1;//输出255 245=256-1 256=2^8
printf("%d",c);//要用printf不能用cout,cout输出char类型时只能输出字符
return 0;
}
char和int的无符号型-1输出结果不一样,char占用1字节,也就是8位,int占用4字节,也就是32位
#include <iostream>
#include <bitset>
using namespace std;
int main(){
bitset<32> a(-1);//将-1转换为2进制
cout<<a<<endl;//输出11111111111111111111111111111111 转换为10进制就是4294967295
return 0;
}
11111111111111111111111111111111哪来的?
-1的补码就是1的原码的反码加1
1的原码00000000000000000000000000000001
1的反码11111111111111111111111111111110
1的反码加1就是11111111111111111111111111111111
char同理,只不过位数从32位变成了8位