首页 > Windows开发 > 详细

正经学C#_位移与其位移运算符[c#入门经典]

时间:2017-02-03 13:45:08      阅读:266      评论:0      收藏:0      [点我收藏+]

在c#入门经典一书中,最为糟糕的一节就是位移了,完全没有讲明白,也没有说全,似乎只是轻轻点了一下何为位移,带了两次原码和补码,完全不理会是否明白不明白。这一点这本书很差。因为此书说了,在大多数应用开发中,除了数学应用,这个功能不是很好常用。 

 

先说一下,何为“位移”,位移是对操作数的二进制进行操作。

也就是说,操作数的位移过程中是2进制,但是最后结果是操作数的类型而已。

 

再说何为 原码,补码。

原码:数字的二进制

补码,计算机系统中数值的存储方式,二进制的特殊计算方式。计算过程:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外,末尾+1,按照二进制计算方式计算

反码:计算机系统中数值的存储方式,二进制的特殊计算方式。计算过程:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

原码和补码,反码是存在关系的,三者之间是可以互相转换。

 

原码变补码,原码变反码

正数:正数的原码和补码,反码是一样。

9的二进制:1001 原码0000 1001 补码0000 1001,反码0000 1001

 

负数 :

原码:就是二进制,最高位位1。

补码:过程最高位1表示符号,其他位按位取反,1变成0,0变成1。最后整个数加1.

反码:除了最高位表述符号,1位负数【-】,0为正数【+】,之外每一位按位取反,1变成0,0变成1

-9 原码1000 1001,补码1111 0111, 反码1111 0110

补码的过程:先是最高位表示符号【1是负数,0是正数】,其他位按位取反,1变成0,0变成1也就是: 1111 0110,之后整个数字+1,1111 0110+1=1111 0111就ok了

反码的过程:先是最高位表示符号【1是负数,0是正数】,其他位按位取反,1变成0,0变成1也就是: 1111 0110 也就ok了,【补码和反码之间的关系是,反码的末尾+1】

补码,反码求原码

正数:

正数的原码,补码,反码是一样的,一样的!

2:原码0000 0010,反码:0000 0010,补码0000 0010

负数:

补码求原码:除了最高位表示符号不变之外,其他位按位取反,1变0,0变1,最后+1【按二进制计算方法计算】

反码求原码:除了最高位表示符号不变之外,其他位按位取反

-2 补码 1111 1110 反码1111 1101 原码1000 0010

正经学C#_位移与其位移运算符[c#入门经典]

原文:http://www.cnblogs.com/T-ARF/p/6362479.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!