int与uint转换过程中值的变化
2010-08-30 18:17
330 查看
int类型的数据转化为uint类型: 因为int是带符号的类型,当int是正数时,int类型数据转化为uint时不发生改变。 当int是负数时,int类型数据转化为uint类型时,值就要发生变化。 但转化的过程并不是去掉前面的负号,例如 int a=-1; uint b=(uint)a; 这时b的结果并不是1;而是4294967295; 我们知道在计算机中存储数据都是用补码来存储的,int的大小是4个字节,也就是32位,并且第一位是符号位; 而uint的大小同样是4个字节,32位,但没有符号位。 所当int a=-1;在计算机中存储的是补码:1111 1111 1111 1111;第一位是符号位。 执行uint b=(uint)a;转化为uint类型时,存储的依然是补码:1111 1111 1111 1111;没有符号位。 这时值就变成了4294967295。 程序: static void Main(string[] args) { //计算int类型的最大值与最小值 int a=1,sum=0; for (int i = 0; i <= 30; i++) { sum += a; a *= 2; } Console.WriteLine("int类型的最大值为:"+sum);//0111 1111 1111 1111 结果为2147483647 sum++; Console.WriteLine("int类型的最小值为:"+sum);//1000 0000 0000 0000 结果为-2147483648 } 本文来自CSDN博客,转载请标明出处:file:///G:/彭华斌/学习/int与uint转换过程中值的变化%20-%20活着%20-%20CSDN博客.mht
相关文章推荐
- int与uint类型之间转换过程中值的变化
- int与uint转换过程中值的变化
- swift Int,Int32,UInt的转换
- c++error:C2664“intCWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 无法将参数 1 从“const char [12]”转换为“LPCTSTR”
- 考察二进制向int或uint转换时的最高位处理
- 佩特来项目经验小集合(2)___组合查询存储过程,报错 "varchar JBID='' 转换成数据类型 int 时失败"
- 存储过程传递参数时出现类型转换错误!如:varchar转换为int时出错
- 存储过程,从数据类型 nvarchar 转换为 int 时出错
- C# 0、1 状态转换(int 类型转string 类型的方法)
- string[]与int[] 互相转换
- STRING INT INTEGER间的转换
- 错误“static_cast”: 无法从“UINT (...)(CPoint)”转换为“LRESULT (...)(CPoint)
- ZZ:java中数据类型转换 (int string char等)
- java中String和int类型互相转换
- java中int如何转换byte
- CString, int, string, char*之间的转换
- QColor与Int类型相互转换
- JAVA中int、String的类型转换
- IOS初学 NSinteger转换成int
- expression 转换为数据类型 int 时出现算术溢出错误