~在C#中什么意思

一个程序中~a以后,会得到一个负数(a是正数),为什么啊?“~”这个符号是干嘛用的啊?
是负数没错,但不应该是-7应该是-1才对啊!

按位取反

10 00 01 10

取反后为

01 11 10 01

-----------------华丽丽的补充答案分割线----------

看来得详细给你分析一下数字的机内表示和机内存储方式。
你最好把你那个a的具体值是多少、类型是什么说一下。

对于最常见的32位有符号整型数,机内长度应该为4个Byte32位,且最高位表示符号为,0为正,1为负,因此1230应该表示为:

0000 0000 0000 0000 0000 0100 1100 1110

方便起见一半用十六进制表示

0x00 00 04 CE

按位取反后成为:

1111 1111 1111 1111 1111 1011 0011 0001 : 0xFFFFFB31

并不是-1230,而是-2147482417

如果是uint_8,即无符号8位整型:

00 00 10 00 (8)

按位取反后成为:

11 11 01 11( 247 而不是-8)

总之这个操作要根据对象具体分析。如果是浮点数更复杂。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-16
位逻辑非运算

位逻辑非运算是单目的,只有一个运算对象。位逻辑非运算按位对运算对象的值进行非运算,即:如果某一位等于0,就将其转变为1;如果某一位等于1,就将其转变为0。

比如,对二进制的10010001进行位逻辑非运算,结果等于01101110,用十进制表示就是:

~145等于110;对二进制的01010101进行位逻辑非运算,结果等于10101010。用十进制表示就是~85等于176。
第2个回答  2015-09-11
server.mappath(~);

这句话的意思就是回到该项目的根目录
第3个回答  2010-01-16
a=6应该是 a=0000 0110

取反应该是 ~a=1111 1001
那也应该不是-7啊
第4个回答  2016-01-05
析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。

析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。
相似回答