计算机中存储的数据是按照补码存储的。
怎么样计算补码:
- 正数的补码是其自身
- 负数的补码是对原码进行求反加一。如:-6的原码是1000 0110,其中开始的1位符号为,表示是负数;那么-6的反码是除符号外按位求反,得,1111
1001;再加一,得,1111 1010。所以-6,在计算机中实际是1111 1010。也就是说,虽然你在屏幕上看到何输入的都是-6,但是计算机对-6进行任何位操作,那么其实操作的是1111
1010。这里简化了-6只用8位表示。
我的计算机中int型为4字节,那么5的二进制表示是00000000 00000000 00000000
00000101,那么-6的二进制表示是11111111 11111111 11111111 11111010。
主要的位运算有:
按位与 &
按位左移 <<
按位取反 ~
按位或 |
按位右移 >>
按位异或 ^
无符号右移 >>>
这里以取反运算为例。对x取反,其结果表示为整数为 ~(x) = - (x+1)。如~(5) =
-(5+1) = -6。
下面解释为什么:
如上面所说,5的二进制表示是00000000 00000000 00000000 00000101,那么按位取反则为11111111 11111111
11111111 11111010,恰好是-6的补码,所以,机器认为~(5) = -6。
同样,~(-6) = 5。同理,-6的表示是11111111 11111111 11111111
11111010,按位求反刚好是5的补码。
再如,按位左移。2147483645 = 01111111 11111111 11111111 11111101。
i = 2147483645 << 1,得到的结果是 i = -6.因为左移一位之后的结果就01111111 11111111
11111111 111111010,恰好是-6的补码。
分享到:
相关推荐
一个c语言 位运算 的程序一个c语言 位运算 的程序一个c语言 位运算 的程序
松翰运算程序 8位 16位 32位加减乘除法运算程序模块
有很多初学C语言的人对于 位运算概念不容易弄清楚, 希望我的这个程序能有所帮助。
C语言程序设计位运算PPT课件.pptx
微程序控制的运算器设计
实现上,可以用一位M 作为进行算术运算或逻辑运算的控制位,M=0 时进行算术运算,M=1 时进行逻辑运算。另外用2位来表示4种操作。 (2)实现一些基本的PSW标志位: 1)进位/借位的输出标志位C; 2) 运算结果为零的...
这是一个N皇后问题基于回溯算法加上位运算优化的程序,可以计算N的全部解
位运算即是直接进行二进制位的处理.利用c语言的位操作功能,可以方便地将程序中的许多开关变量存储在一个字节的特定位中以节省内存,此类的思想和技巧常常被用于操作系统、计算机网络协议和软件的设计中⋯ .目前...
矩阵运算程序矩阵运算程序矩阵运算程序矩阵运算程序
本程序仅供初学者学习,适合于刚接触汇编语言程序设计这门课程的学生。
主要介绍了位运算及其相关的技巧,适用于程序设计
matlab卷积运算程序,不利用conv进行计算
C语言实验三程序总结逻辑运算和选择结构程序设计.pdf
位运算简介及实用技巧...下面的十多行代码是n皇后问题的一个高效位运算程序,看到过的人都夸它牛。初始时,upperlim:=(1 shl n)-1。主程序调用test(0,0,0)后sum的值就是n皇后总的解数。拿这个去交USACO,0.3s,暴爽。
pic子程序库与运算平台,里面有很多常用子程序,可直接调用。
「8位算术逻辑运算实验」.pdf「8位算术逻辑运算实验」.pdf「8位算术逻辑运算实验」.pdf「8位算术逻辑运算实验」.pdf「8位算术逻辑运算实验」.pdf「8位算术逻辑运算实验」.pdf「8位算术逻辑运算实验」.pdf「8位算术...
C语言编一个程序完成64位数据(无符号)的加法,减法运算
C语言程序设计位运算PPT学习教案.pptx
C语言程序设计位运算完PPT课件.pptx
C程序设计位运算实用PPT课件.pptx