C语言、Java语言、C#语言中的按位运算符中的取反操作的具体步骤
2014-04-23 14:09
274 查看
C语言、Java语言、C#语言中的按位运算符中的取反操作的具体步骤
①、求出原数的补码
②、对补码的每一位包括符号位,0变1,1变0
③、第二步得到的数是补码形式,所以要变回原码的形式。如果这个数是正数的话,补码和原码相同不用再变了,最后的结果就是第二步的结果;负数的话,就得先减一,再按位取反既0变1,1变0,这里的符号位不变,然后得到结果。
看下面的例子:
例一 ~(-19) = 多少呢
-19的原码 10010011
-19的反码 11101100
-19的补码 11101101
对-19取反操作 00010010
此时得到的是一个数的补码形式,把它变回原码,因为这个数是一个正数,补码和原码相同,所以就是18
例二 ~19 = 多少呢
19的原码 00010011
19的反码 00010011
19的补码 00010011
对19取反操作 11101100
此时得到的是一个数的补码形式,把它变回原码,因为这个数是一个负数,负数的补码变回原码的步骤为:①对补码减一,②按位取反(这里符号位不变)
结果为 10010100
也就是-20
总结:
也就是说,对正数取反操作
①、把正数转换成二进制;
②、按位取反(包括符号位);
③、其实得到的这个补码形式的数一定是一个负数,就把它变回原码的形式,再转成十进制就行了。
对负数取反的操作
①、把负数转换成二进制
②、然后把原码变成补码;
③、按位取反(包括符号位);
④、其实得到的这个补码形式的数一定是一个正数,把它转换成十进制数就行了。
小发现:
对一个数取反操作,口算的方法步骤:
对这个数 +1 ,然后再取相反数。
比如上面的例子:
~(-19) = 18。 步骤:-19 + 1 = -18 ,取相反数得 18
~19 = -20。 步骤:19 + 1 = 20 ,去相反数得 -20
①、求出原数的补码
②、对补码的每一位包括符号位,0变1,1变0
③、第二步得到的数是补码形式,所以要变回原码的形式。如果这个数是正数的话,补码和原码相同不用再变了,最后的结果就是第二步的结果;负数的话,就得先减一,再按位取反既0变1,1变0,这里的符号位不变,然后得到结果。
看下面的例子:
例一 ~(-19) = 多少呢
-19的原码 10010011
-19的反码 11101100
-19的补码 11101101
对-19取反操作 00010010
此时得到的是一个数的补码形式,把它变回原码,因为这个数是一个正数,补码和原码相同,所以就是18
例二 ~19 = 多少呢
19的原码 00010011
19的反码 00010011
19的补码 00010011
对19取反操作 11101100
此时得到的是一个数的补码形式,把它变回原码,因为这个数是一个负数,负数的补码变回原码的步骤为:①对补码减一,②按位取反(这里符号位不变)
结果为 10010100
也就是-20
总结:
也就是说,对正数取反操作
①、把正数转换成二进制;
②、按位取反(包括符号位);
③、其实得到的这个补码形式的数一定是一个负数,就把它变回原码的形式,再转成十进制就行了。
对负数取反的操作
①、把负数转换成二进制
②、然后把原码变成补码;
③、按位取反(包括符号位);
④、其实得到的这个补码形式的数一定是一个正数,把它转换成十进制数就行了。
小发现:
对一个数取反操作,口算的方法步骤:
对这个数 +1 ,然后再取相反数。
比如上面的例子:
~(-19) = 18。 步骤:-19 + 1 = -18 ,取相反数得 18
~19 = -20。 步骤:19 + 1 = 20 ,去相反数得 -20
相关文章推荐
- java与C#的语言和操作上的区别积累
- java与C#的语言和操作上的区别积累
- Java实现生成和解码二维码具体操作步骤
- 深入c# GDI+简单绘图的具体操作步骤(四)
- 深入c# GDI+简单绘图的具体操作步骤(三)
- 深入c# GDI+简单绘图的具体操作步骤(一)
- 浅析MongoDB及其C#驱动的操作步骤(转自:http://database.51cto.com/art/201007/212039.htm)
- VB,C#等语言得到java,javascript,actionscript等的getTime()函数的功能一致的方法
- 巧用C#做中间语言 实现Java调用.net DLL
- c语言,方法中可声明静态变量,java语言不支持这样子
- java语言实现二叉排序树的操作
- Java的位运算符具体解释实例——与(&)、非(~)、或(|)、异或(^)
- 数据结构之单向线性表 c语言与java语言实现
- 【006】Java语言(命令行简介及一些基本操作)
- 利用doxygen生成说明文档(支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#)
- C#连接操作MySQL数据库详细步骤 帮助类等(二次改进版)
- 链表的基本操作java语言实现
- C++、Java和C#语言在处理“虚拟私有方法”上的差异
- Java语言JDBC数据库连接操作