-14 >>2 =-4
14 : 0000 1110(原码) -14: 就是14原码取反加1 -> 1111 0010 -> 右移两位带符号 ->1111 1100 再取反加1 1->0000 0010 +1->0000 0100 =4
位移进制运算
带符号右移 题:-15 >> 2 = -4
15原码: 00000000 00000000 00000000 00001111 //32位,二进制
反码: 11111111 11111111 11111111 11110000 //0变1,1变0
补码: 11111111 11111111 11111111 11110001 //最后位加1,-15二进制
右移2位: 11111111 11111111 11111111 11111100 //右边丢弃2位,前面30位保留,左边补1
取反: 00000000 00000000 00000000 00000011 //0变1,1变0
+1: 3+1
结果: =-4 //负号保留,十进制
带符号左移 题: 10 << 2 = 40
10 补码: 00000000 00000000 00000000 00001010 //32位,二进制
左移2位: 00000000 00000000 00000000 00101000 //左边丢弃2位,右边补0
结果: 40 //十进制
无符号右移 题:-4321 >>> 30 = 3
4321原码: 00000000 00000000 00010000 11100011 //32位,二进制
反码: 11111111 11111111 11101111 00011100 //0变1,1变0
补码: 11111111 11111111 11101111 00011101 //最后位加1,-4321二进制
无符号右移30位: 00000000 00000000 00000000 00000011 //右边丢弃30位,前面二位保留,左边补0
结果: 3 //十进制
& 位逻辑与 题:44 & 21 = 4
44 补码: 00000000 00000000 00000000 00101100 //32位,二进制
21 补码: 00000000 00000000 00000000 00010101 //32位,二进制
& 运算: 00000000 00000000 00000000 00000100 //对应的两个二进制位均为1时 结果位才为1 否则为0
结果: 4 //十进制
| 位逻辑与 题:9 | 5 = 13
9 补码: 00000000 00000000 00000000 00001001 //32位,二进制
5 补码: 00000000 00000000 00000000 00000101 //32位,二进制
| 运算: 00000000 00000000 00000000 00001101 //对应的二个二进制位有一个为1时,结果位就为1
结果: 13 //十进制
^ 位逻辑异或 题: 9 ^ 5 = 12
9 补码: 00000000 00000000 00000000 00001001 //32位,二进制
5 补码: 00000000 00000000 00000000 00000101 //32位,二进制
| 运算: 00000000 00000000 00000000 00001100 //对应的二进制位相异时,结果为1
结果: 12 //十进制
~ 位逻辑反 题: ~9 = -10
9 补码: 00000000 00000000 00000000 00001001 //32位,二进制
~ 运算: 11111111 11111111 11111111 11110110 //最高位为1表示为一个负数,则进行取反加1
取反: 00000000 00000000 00000000 00001001 //32位,二进制
+1: 9+1 //32位,二进制
结果: -10 //十进制
在计算机系统中,数值一律用补码来表示(存储)。
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补
码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
补码与原码的转换过程几乎是相同的。
数值的补码表示也分两种情况:
(1)正数的补码:与原码相同。
例如,+9的补码是00001001。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码
0000111按位取反为1111000;再加1,所以-7的补码是11111001。
已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。
例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。
分享到:
相关推荐
计算机组成原理 带位移运算模型机的设计与实验:包括实验要求,内容,步骤,总结等。。。
简单小工具,输入十进制数值计算结果,C# WINFORM版,非源码
本资料集为C语言进阶学习者提供了全面的预处理、文件处理、结构体和位移运算的知识。内容涵盖了从基础语法到高级应用的各个方面,旨在帮助学习者深入理解C语言的核心概念和技术细节。 适用人群 本资料适合具有C语言...
指针,算术,位移运算开发包部份示例代码[AsmInVB].
这是一个关于测试C语言中整数移位运算的MFC应用程序,界面中标志表示左移或者右移,移位数输入要移的位数,还有输入整数,和输出结果,按钮是用来操作,很方便用来测试
绝对韩顺平老师的讲解视频!教学文件打包太大,就一个一个的上传了! avi格式的,最好用KMPlayer来播放,下载地址:https://www.kmplayer.com/home 后续还上传,韩顺平老师教学的源代码!
不错的主要用于加密的vbs(asp)位移运算类
以下面的格式提供运算表达式:$(( expression )) $ echo $((5*(3+3))) 30 $ result = $(($myvar-10)) shell提供方便的数之间的进制转换: $ echo $((013))#八进制 $ echo $((0xA4))#十六进制 还可以使用以下格式指定...
文中主要讲解了负数移位的实现过程。
第二个运算数有数字0的位,第一个运算数对应位的数字不变。当对某些类型进行位运算时,你将会看到这个属性的用处。 00101010 42 ^ 00001111 15 00100101 37 位逻辑运算符的应用 下面的例子说明了位逻辑运算符: ...
文件移位加密与解密 C语言实现 完整代码 截图显示
8位LED左移,直至LED全部点亮。使用左移符号
图像除法运算图像(位与,位异或,位移运算)
(2) 在大多数的机器上,整数乘法指令相当地慢,需要12或者更多的始终周期,然而其他整数运算-例如加法、减法、位移运算和移位-只需要1个时钟周期.因此,编译器使用的一项重要的优化就是试着使用移位和加法运算的组合来...
其实很简单。。。 C#位移运算符: 左移:<< 右移:>> 位移理解可能简单一些:其实就是数据转换成二...下面用一个曾经回答一个网友的提问来理解一下位移的运算 题目:把89右位移一位: 代码如下:string flag = Co
实例6 位移运算 实例7 字符译码 实例8 指针操作符 实例9 if判断语句 实例10 else-if语句 实例11 嵌套if语句 实例12 switch语句 实例13 for语句 实例14 while语句 实例15 do-while语句 实例16 break和continue语句 ...
内含:博主学习记录 1.Hello 2.type(数据类型) 3.select(01if;02switch;03嵌套;04三目运算符) 4.循环(01for;02while;...02位移运算;03位运算应用) 11.文件(01文件打开关闭;02文件读写)
在基于粒计算和ECLAT算法的基础上提出一种挖掘数据流滑动窗口中topK频繁项集算法,采用二进制方式存储项,利用位移运算实现增量更新,实施与运算计算项集支持度,同时利用二分查找法插入到项目序表中,输出前K个...
-二进制、位运算、位移运算 -集合 -集合 -集合 -集合补充 -异常 -面试题评讲 -布局管理器 -常用组件 -swing编程实战 -绘图技术.坦克大战2 -事件处理.坦克大战3 -事件监听.坦克大战4 -事件总结.坦克大战5 -线程.坦克...