iOS基础-学习笔记83 12-为什么要引入反码、补码? 首先,因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值取余的加减。(其值的概念在本文最开头)但是对于计算机,加减乘数已经是最基础的运算,要设计的尽量简单,计算机辨别“符号位“显然会让计算机的基础电路设计变得十分复杂!于是人们想出了将符号位也参与运算的方法。我们知道,根据运算法则减去一个正数等于加上一个负数,即:1-1=1+(-1)=0,所以机器可以只有加法而没有减法,这样计算机运算的设计就更简单了。 14-位运算符介绍(一) 位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。 C语言提供了6个操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。 (1) & 按位与 只有对应的两个二进制位均为1时,结果位才为1,否则为0 口诀:同为1为1 例如:9&13=9 1001 & 1101
1001 (2) | 按位或 只要对应的二个二进位有一个为1时,结果位就为1,否则为0 1001 | 1101
1101 (3) ^ 按位异或 当对应的二进制位相异(不相同)时,结果为1,否则为0 1001^ 1101
0100 (4)~取反 各二进位进行取反(0变1,1变0) ~9=-10 9的原码:0000 0000 0000 0000 0000 0000 0000 1001 反码:1111 1111 1111 1111 1111 1111 1111 0110 //-10 知道补码求原码:也是符号位不变,其他各位取反+1 1111 1111 1111 1111 1111 1111 1111 0110 取反 1000 0000 0000 0000 0000 0000 0000 1001 +1 1000 0000 0000 0000 0000 0000 0000 1010 //-10 |