2014-05-22-计算机的数据表示

来源:互联网 发布:java apt 编辑:程序博客网 时间:2024/05/22 12:41

今天看《深入理解计算机系统》的看到很相似的符号,特此做了一下总结和区分,以防搞混乱

首先是位运算符号涉及以下几个符号:

1,&(AND)

2.,|(OR)

3。~(NOT)

4,^(异或)//相同为0不同为1

5,》》 《《 左右移动,X>>3,X<<4 

这写位运算最好都是展开成二进制来进行操作,这样最明显

然后,和位操作的符号很像的就是逻辑运算了

首先第一个问题是:什么是逻辑运算

A;所谓的逻辑运算之针对命题来,他们是2个完全不一样的东西,功能上来说认为所有非0的参数都表示TRUE,0表示FLASE

其次第二个问题是:他们都有哪些符号?

1,&&(AND)

2,||(OR)

3,!(NOT)

之所以说他们完全不懂请看下面的结果

!0X61 == 0X00

!!0X61 =0X01

他们只有二值表示:0X00 或者0X01

而位运算

0X61&0X03 ==0X01/保持低2位同理类推!!

问题三:>> <<这个两个位移符号补位是怎么样的

0X40<<4,如这个,左移地位都是补充0

而0X40>>4高位到底是补充0还是1?

虽然没有规定是逻辑左移还是算术左移,但是目前几乎都是算术左移

算术左移:高位是1补充1,是0补充0

位的操作还有保持某几位,比如低四位:X&0XF

某几位置一:X|0XF

任何一个数都是自己的补数即X^X=0;

向左是负数,向右是负数

补码的表示几乎都是现在的机器所使用的用法,即最高位是权高位符号位,其权重=-Xw*2^(w-1)

所以有符无符号转换成补码是+权重,而补码转成无符号则是T2U(X)=2^w-X

通常我们写某个字长的最小值是是这样写的TMIN(32)=-2^31-1 而不是写成-2^32

当有符号和无符号数据相比较时,会把有符号数据转化成无符号的数据


0 0
原创粉丝点击