c语言int表示范围以及移位运算符
2010-01-20 15:34
381 查看
刚刚看到的几个小基础知识,记录一下:
在int型为32位的硬件环境中,int的表示范围是:-2的31次方 到 2的31次方减1。
原因:因为int是带符号类型,所以最高位为符号位,于是最大表示的正数是:01111111 11111111 11111111 11111111,也就是2的31次方减1。
再来看最小值,-2的31次方的原码表示为10000000 00000000 00000000 00000000,此时最高位的数字既代表符号,也代表数值。求它的补码,所得结果为10000000 00000000 00000000 00000000。同样也是最高位既代表符号又代表数值,也就是说-2的31次方的原码和补码是相同的。
接着试试-2的31次方减1,它的原码为(假设先不考虑溢出)11111111 11111111 11111111 11111111,求反加1之后为10000000 00000000 00000000 00000001,变成了-1。所以,int的表示范围是: -2的31次方 到 2的31次方减1。
然后是移位运算符:
这是把i左移两位,左移的规则只记住一点:丢弃符号位,0补最低位!
如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了33%32=1位。
右移有两种,算术右移(带符号)>>和逻辑右移(不带符号)>>>。
算术右移:符号位不变,左边补上符号位。如: 1000 1000 >> 3 为 1111 0001
逻辑右移:符号位一起移动,左边补上0。如:1000 1000 >>> 3 为 0001 0001
最后,移位的位数不能超过数据的大小,不能小于0。
在int型为32位的硬件环境中,int的表示范围是:-2的31次方 到 2的31次方减1。
原因:因为int是带符号类型,所以最高位为符号位,于是最大表示的正数是:01111111 11111111 11111111 11111111,也就是2的31次方减1。
再来看最小值,-2的31次方的原码表示为10000000 00000000 00000000 00000000,此时最高位的数字既代表符号,也代表数值。求它的补码,所得结果为10000000 00000000 00000000 00000000。同样也是最高位既代表符号又代表数值,也就是说-2的31次方的原码和补码是相同的。
接着试试-2的31次方减1,它的原码为(假设先不考虑溢出)11111111 11111111 11111111 11111111,求反加1之后为10000000 00000000 00000000 00000001,变成了-1。所以,int的表示范围是: -2的31次方 到 2的31次方减1。
然后是移位运算符:
int i = 1; i = i << 2;
这是把i左移两位,左移的规则只记住一点:丢弃符号位,0补最低位!
如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了33%32=1位。
右移有两种,算术右移(带符号)>>和逻辑右移(不带符号)>>>。
算术右移:符号位不变,左边补上符号位。如: 1000 1000 >> 3 为 1111 0001
逻辑右移:符号位一起移动,左边补上0。如:1000 1000 >>> 3 为 0001 0001
最后,移位的位数不能超过数据的大小,不能小于0。
相关文章推荐
- c语言int表示范围以及移位运算符
- [转]c语言int表示范围以及移位运算符
- 补码的求法以及八位二进制补码所能表示的数的范围
- 对于c语言int类型和float,以及double类型表示范围的计算
- 计算机编码类型以及变量表示范围
- hdu 5059 判断数字表示方式以及范围合法(int型之内)
- 无向网的邻接矩阵表和邻接链表表示以及各自的深度优先搜索和广度优先搜索
- F5张毅强:云落城市,混合驱动来自应用交付领导厂商F5公司的中国区总经理张毅强表示,在F5以及众多友
- C/C++中各种类型int、long、double、char表示范围(最大最小值)
- 关于c语言整形数据表示范围
- 各种颜色以及16进制表示形式
- 移位运算符 以及 位逻辑运算符
- 希腊字母的表示以及读音
- 文字超出范围用...表示
- Lisp语言:变量以及变量的作用范围
- C/C++中各种类型int、long、double、char表示范围(最大最小值)
- 输入一个int型数据,计算出该int型数据在内存中存储时1的个数以及相应二进制表示
- charCodeAt方法以及Unicode中文汉字编码范围
- 数据结构(二):线性表的使用原则以及链表的应用-稀疏矩阵的三元组表示
- 二进制表示法以及Java 移位操作符的介绍