C语言的移位运算

转载 2012年03月29日 16:59:38

1.左移

无论是有符号数还是无符号数,全部采用逻辑左移,补位加0

2.右移

采用算术右移,符号位不变,符号位的值为1,则补位加1;反之,则补位加0

无论左移还是右移,当移动的长度超过该类型的2进制位数,则取移位的位数和类型的位数的余数进行移位

算术右移和逻辑右移的区别是:算术右移不右移符号位,即最高位,右移后前补0还是1取决于符号位的值;逻辑右移执行时将移动符号位,右移后前补0

深入理解C语言中的移位运算

说明:本文主要摘录自《深入理解计算机系统》第二章信息的表示与处理。   C语言还提供了一组移位运算,以便向左或者向右移动位模式。对于一个位表示为[xn-1,xn-2,…,x0]的操作数x,C表达式x ...
  • LGCSSX
  • LGCSSX
  • 2014年04月24日 20:26
  • 5025

C语言位运算妙用

位运算应用口诀 清零取反要用与,某位置一可用或 若要取反和交换,轻轻松松用异或 移位运算 要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 ...
  • huoyahuoya
  • huoyahuoya
  • 2016年11月16日 23:17
  • 472

C语言的本质(6)——位运算

C语言的本质(6)——位运算
  • yincheng01
  • yincheng01
  • 2014年06月30日 12:58
  • 1456

位运算实现四则运算

计算机中对整数的表示大多是采用补码的方式。补充一下补码的知识: [正整数]补 = [正整数]原 [负整数]补 = [正整数]反 + 1 (保留符号位) 负整数补码的真值:对负整数的补码再求补码(保留...
  • tianjian9900
  • tianjian9900
  • 2014年11月30日 09:37
  • 633

C/C++移位运算

一、移位运算符及其规则 移位运算符就是在二进制的基础上对数字进行平移,是在补码的基础上进行操作的。按照平移的方向和填充数字的规则分为三种:>(带符号右移)、>>>(无符号右移)。 左移运算符的规...
  • captain_wangnb
  • captain_wangnb
  • 2016年01月15日 11:17
  • 1779

C语言中的位移运算

位移运算1.左移//C左移表达式 x
  • oNever_say_love
  • oNever_say_love
  • 2016年03月17日 10:49
  • 2513

C语言中的移位操作

C语言中的移位操作,内容不多。不过有些地方你不注意,就疏忽了。 先做两个小题先。 (1)unsigned char x=3; x>1是多少? (2)char x=3; x>1是多少? (3...
  • big_bit
  • big_bit
  • 2016年05月05日 21:30
  • 2573

C语言位运算详解

C语言位运算详解 位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,shor...
  • q775968375
  • q775968375
  • 2013年07月17日 16:44
  • 2253

C/C++中移位实现乘除法运算

用移位实现乘除法运算     a=a*4;     b=b/4; 可以改为:     a=a     b=b>>2; 说明: 除2 = 右移1位         ...
  • u013467442
  • u013467442
  • 2014年10月10日 17:36
  • 1928

关于c语言中负数位移位操作的漫谈

最近有个朋友在程序中使用了对16进制数做负数移位(编译器是gcc),本人最次产生好奇,所以研究了一些。 对一个数做负数位移位的操作是不规范的,但是是可行的。 具体例子: char tmp = 0x...
  • u012564936
  • u012564936
  • 2014年07月02日 22:01
  • 2040
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言的移位运算
举报原因:
原因补充:

(最多只允许输入30个字)