C/C++ 数据类型扩展
2016-08-07 13:15
120 查看
数据类型扩展:
定义的数据类型的值与定义的数据类型无关,只与最后输出形式有关。
如:char c=128;printf("c=%u",c),c=4294967168(0xFFFFFF80);
printf("c=%d",c),输出为c=-128;
char
c=64;printf("c=%u",c),c=64(0x00000040); printf("c=%d",c),输出为c=64;
unsigned short i=10;printf("~i=%u",~i)~i=4294967285(0xFFFFFFF5);
printf("~i=%d",~i),~i=-11;
其中涉及到数据类型的扩展,符号扩展规律就是“对于无符号整型数据,要扩展成符号位的话,就是将扩展位补零,其他位保持不变。但对于有符号整型数据的符号扩展规律就是:原来符号位为1时,符号扩展位补1;原来符号位为0时,符号扩展位补0;其他位保持不变。”
定义为字符型时,先扩展为int型:char型扩展属于有符号扩展,c=128=0x80,最高位也就是符号位为1,扩展成int型后c=0xFFFFFF80;c=64=0x40,符号位为0,扩展成int型后c=0x00000040;这里就是原来符号位为1时,符号扩展位补1;原来符号位为0时,符号扩展位补0;其他位保持不变
在计算机中采用补码保存数据,若为无符号输出或最高位为0(正数),原码与补码相同,若为有符号输出,看最高位,若为1,表示为负数,求取原码,c的原码=补码按位取反(除符号位外)+1(注:原码-补码之间的相互转换规则相同)=0x80000080;所以输出为-128;
定义为无符号短整型时,先扩展为int型:i=10=0x0A,扩展成int型,符号扩展位为0,扩展后i=0x0000000A;~i=0xFFFFFFF5;原码=0x8000000B==-11;
定义的数据类型的值与定义的数据类型无关,只与最后输出形式有关。
如:char c=128;printf("c=%u",c),c=4294967168(0xFFFFFF80);
printf("c=%d",c),输出为c=-128;
char
c=64;printf("c=%u",c),c=64(0x00000040); printf("c=%d",c),输出为c=64;
unsigned short i=10;printf("~i=%u",~i)~i=4294967285(0xFFFFFFF5);
printf("~i=%d",~i),~i=-11;
其中涉及到数据类型的扩展,符号扩展规律就是“对于无符号整型数据,要扩展成符号位的话,就是将扩展位补零,其他位保持不变。但对于有符号整型数据的符号扩展规律就是:原来符号位为1时,符号扩展位补1;原来符号位为0时,符号扩展位补0;其他位保持不变。”
定义为字符型时,先扩展为int型:char型扩展属于有符号扩展,c=128=0x80,最高位也就是符号位为1,扩展成int型后c=0xFFFFFF80;c=64=0x40,符号位为0,扩展成int型后c=0x00000040;这里就是原来符号位为1时,符号扩展位补1;原来符号位为0时,符号扩展位补0;其他位保持不变
在计算机中采用补码保存数据,若为无符号输出或最高位为0(正数),原码与补码相同,若为有符号输出,看最高位,若为1,表示为负数,求取原码,c的原码=补码按位取反(除符号位外)+1(注:原码-补码之间的相互转换规则相同)=0x80000080;所以输出为-128;
定义为无符号短整型时,先扩展为int型:i=10=0x0A,扩展成int型,符号扩展位为0,扩展后i=0x0000000A;~i=0xFFFFFFF5;原码=0x8000000B==-11;
相关文章推荐
- C++中将短数据类型扩展为长类型
- 使用域扩展interbase的数据类型
- Dev-C++下基本数据类型学习小结
- C++数据类型之一:常量和变量
- c++ 基本数据类型长度(vc6.0 32位机;
- 关于linux下C++中利用socket时的数据类型转换错误
- 利用C++的stringstream对各种数据类型转换
- Visual Basic、C# 和 C++ 的数据类型比较(转)
- C++中数据类型的转换
- Delphi、C C++、Visual Basic数据类型的对照
- 《C++ Primer》学习笔记——第三章C++数据类型
- symbian c++ 学习 2 数据类型及代码规范
- 用C++模拟DELPHI的set数据类型.
- C++数据类型转换
- C++ 和Delphi的数据类型对照表
- C++ 第二章(数据类型)之三
- 16位计算机中C++常用基本数据类型描述 和 字符常量 摘自 钱能C++教程
- C++与.net数据类型对应表
- C++数据类型之二:指针
- Dev-C++下基本数据类型学习小结