回 帖 发 新 帖 刷新版面

主题:Console.Write(~11)输入结果为什么是-12

Console.Write(~11)输入结果为什么是-12

学了快一个月的c#了,发现连这个问题都不懂~汗!!

回复列表 (共5个回复)

沙发

你明白~这个意思么?
console.write会有个自动的重载
会把参数都转成string类型

板凳

能不能具体说说~

3 楼

11D=00001011B 取反操作实际上是对二进制数做的,所以~11D=11110100B,因为符号位是1,所以这个数是一个负数,按照补码的表示方法,这个数就是-12

4 楼

[quote]11D=00001011B 取反操作实际上是对二进制数做的,所以~11D=11110100B,因为符号位是1,所以这个数是一个负数,按照补码的表示方法,这个数就是-12
[/quote]
11110100B这个怎么算出的-12呢?

5 楼

取补码就是对原码取反加一,所以由补码求原码就是减一取反,~(11110100B-1)=00001100B=12D

我来回复

您尚未登录,请登录后再回复。点此登录或注册