16进制,2进制,输出数的二进制表示
输出int的二进制形式:itoa转换int为2进制的字符串,输出,cout<<hex<<128输出16进制
https://www.zhihu.com/question/20329210 8为无符号的范围是-128——127,00——7f表示0到127,80——FF表示-128到-1
char ss[33]; -1的补码16进制表示为0xffffffff,共需要32位,且高位不是0,所以需要33个字节来存;如果是-128呢?输出ffffff80,也需要33个字节;如果是128,只输出10000000,不需要33字节
cout << -1<< endl;
_itoa(-1, ss, 2);;
cout<<hex<<-128<<endl; 输出ffffff80;cout没有bin的形式可以输出二进制
cout<<128<<endl; 上句cout的状态为hex,会保留下来,所以这句也是输出80,80是128作为一个int的16进制表示
0x0——0x7fffffff赋值给int是非负整数,0x8000000——0xffffffff表示了[最大负数,-1]的范围,例如-1的16进制表示为0xffffffff
int a=0xffffffff; cout<<0xfffffff;为无符号的4294967295 4,294,967,295是最大的unsigned int(32位)值,输出a结果为-1,a=0xffffffe是-2
最小的int是0x80000000
int a=0x80000000,a的值为-2,147,483,648;
1 int d = 0xffffffff; 2 cout << d << endl; 3 cout << 0x7fffffff << endl; 4 cout << 0x1 << endl; 5 cout << 0xffffffff << endl;
cout<<hex<<showbase<<d<<endl; 可以输出前缀0x;cout是有状态的,加hex后会一直保持为16进制输出形式,要切回10进制,用cout<<dec;
1 cout << hex <<showbase<< a << endl; //int a=11,showbase 输出0xb 2 cout <<dec<< 32 << endl;//状态切换回10进制 3 cout << 128 << endl; 4 char data[8] = { 0x68, 0x61, 0x43, 0x41, 0x42, 0x65,0x31,0x39 }; 5 for (int i = 0; i<8; i++) 6 { 7 cout << data[i] << endl; 8 }
无符号int的最大值为UINT_MAX vs里的定义为#define UINT_MAX 0xffffffff
所以 unsigned int a=0xffffffff; a的值是 4294967295;而int a=0xffffffff ,a是有符号数,值为-1,即最大的负整数
ULONG_MAX unsigned long的最大值 ULLONG_MAX unsigned long long [int]的最大值
float 是6位有效数字,float f=3.141592623;是从double类型到float类型,发生小数截断,3.14159
0.00001只有1位有效数字,double 有10位有效数字

浙公网安备 33010602011771号