主题: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
我来回复