主题:Console.Write(~11)输入结果为什么是-12
			
 supercrsky
				 [专家分:580]  发布于 2007-03-03 22:01:00							
			Console.Write(~11)输入结果为什么是-12
?
学了快一个月的c#了,发现连这个问题都不懂~汗!!
						
					 
		
			
回复列表 (共5个回复)
		
								
				沙发
				
					
sts017 [专家分:360]  发布于 2007-03-04 00:49:00				
				你明白~这个意思么?
console.write会有个自动的重载
会把参数都转成string类型
							 
						
				板凳
				
					
supercrsky [专家分:580]  发布于 2007-03-04 07:39:00				
				能不能具体说说~
							 
						
				3 楼
				
					
ch3cho [专家分:850]  发布于 2007-03-04 11:08:00				
				11D=00001011B 取反操作实际上是对二进制数做的,所以~11D=11110100B,因为符号位是1,所以这个数是一个负数,按照补码的表示方法,这个数就是-12
							 
						
				4 楼
				
					
supercrsky [专家分:580]  发布于 2007-03-04 16:40:00				
				[quote]11D=00001011B 取反操作实际上是对二进制数做的,所以~11D=11110100B,因为符号位是1,所以这个数是一个负数,按照补码的表示方法,这个数就是-12
[/quote]
11110100B这个怎么算出的-12呢?
							 
						
				5 楼
				
					
ch3cho [专家分:850]  发布于 2007-03-04 22:45:00				
				取补码就是对原码取反加一,所以由补码求原码就是减一取反,~(11110100B-1)=00001100B=12D
							 
									
			
我来回复