您的位置:首页 > 其它

数据存储与运算符部分总结

2018-03-12 18:28 120 查看
大学学习计算机组成原理的时候这部分非常枯燥,编程就会发现这些基础知识在实际中其实很有趣。

关于计算机中存储的数据

计算机中用补码来存储数据,最大的正数为231−1231−1,也就是

0x7fffffff (0111 0000 0000 0000 0000 0000 0000 0000)


最小的数为−231−231,也就是

0x80000000 (1000 0000 0000 0000 0000 0000 0000 0000)


1. 补码可将减法转化为加法计算,简化运算器的线路设计。

带符号移位>> 和不带符号移位(>>>

1) >>(后面丢弃,负数移位前面加1,正数移位前面加0)

正数
4>>1 = (0100)>>1 = (0010) = 2

a067

负数
-4>>1 = (1100)>>1 = (1110) = -2


2) >>>(正负数移位都加0)

正数
4>>>1 = 2


负数
-4>>>1 = (0111 1111 1111 1111 1111 1111 1111 1110) = 2147483646


原码-补码的运算手算是有点复杂的:

1 如果是正数的话原码补码相同

2 负数:首位取1,其他位取反,结尾数再加1.(补码求原码同理)

异或 ^

二进制按位异或。

9^12 = (1001) ^ (1100) = (0101) = 5


% 取模

需要注意的是a%b,b不能为0,因此作为判断或条件时,此条件应当优先,否则会报错。另外,0%b = 0(b非零)。

& 与运算 &&短路与

(XXXX XXXX) & (ff00ff00) 取XXXX XXXX中含1的部分。

A && B中,如果A被判断为false,则B是不再运行的,因此一定要注意顺序问题,或运算相同。

| 或运算 ||短路或

| 也可理解为取并,比如 (XXXX 0000) | (0000 YYYY) = (XXXX YYYY)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: