Lesson02 二进制运算
2016-09-04 01:20
253 查看
二进制运算
补码:
计算机中,数值都是以补码的形式存在的, 原码是被人脑识别的,补码是被机器存储的。要求得补码,首先要确定数据长度(几位数),首位表示符号位,1为负数,0为正数,后面所有位表示数值。
正数的补码是自己 负数的补码为,符号位后面的所有位取反,加1:
[1] => [00000001]原 => [00000001]补
[-5] => [10000101]原 => [11111010]反+[00000001] => [11111011]补
补码求原码:补码-1,取反
[00000001]补 => [00000001]原 == 1
[11111011]补 => [11111011]-1 => [11111011] + [11111111](-1补码) => [11111010]反 => [10000101]原 == -5
+0 -0 的补码还是自己
计算机中,只有加法,没有减法,减法会转为加负数运算,计算结果保留规定的位数,多余的数高位溢出。
如1-5在计算机中的运算方式(8位):
[1] == [00000001]原 == [00000001]补
[-5]==[10000101]原==[11111010]+[00000001]==[11111011]补
1-5 == [00000001]补 + [11111011]补
== [11111100]补
== [11111100] -1 (负数原码=补码-1,再取反)
== [11111100]+[11111111]==[11111011]
==[10000100]
==-4
补码的好处:方便计算机进行运算,计算机只能进行相加的运算,把数据都按补码存储后,符号位也会参与计算。
左移,右移:
逻辑左移、算术左移:右边补0逻辑右移:左边补0
算术右移:首位为1,补1,否则补0
与、或、非、异或:
与:&& 如: A、B都为非0,A&B==true 否则A&B==false或:|| 如:A、B有一个为非0,A||B==true,否则A||B==false
非:! 如:A为非0,!A==false
异或:^ 如:A、B同为0或同为非0,A^B同==true,否则A^B同==false
浮点数安全一点运算:
把浮点数转为整数运算,用的时候除以相应倍数。相关文章推荐
- 20161208计算机科学导论02_二进制运算
- 20161208计算机科学导论02_二进制运算
- Po_lesson2_二进制运算_基础_2017/6/17
- 02.二进制运算
- 20161208计算机科学导论02_二进制运算
- 20161208计算机科学导论02_二进制运算
- 20161208计算机科学导论02_二进制运算
- 20161208计算机科学导论02_二进制运算
- lesson2 二进制运算
- 20161208计算机科学导论02_二进制运算
- 20161208计算机科学导论02_二进制运算
- 20161208计算机科学导论02_二进制运算
- Poedu_计算机基础_lesson02_20160826_二进制
- 02-线性结构1 一元多项式的乘法与加法运算 -数据结构
- iOS学习_Lesson02_分支结构
- 懂二进制(异或的应用;注意位运算的优先,以及与运算的结果,结果不一定是 1)---2015小米暑期实习笔试题
- the art of disassembly chapter01---lesson1--02
- IO-02. 整数四则运算(10)
- 在定点二进制运算器中,减法运算一般通过什么来实现
- PAT 02-线性结构2 一元多项式的乘法与加法运算 (java)