c语言int表示范围以及移位运算符
来源:互联网 发布:惜缘三角梅园艺淘宝店 编辑:程序博客网 时间:2024/04/27 00:47
刚刚看到的几个小基础知识,记录一下:
在int型为32位的硬件环境中,int的表示范围是:-2的31次方
原因:因为int是带符号类型,所以最高位为符号位,于是最大表示的正数是:01111111 11111111 1111111111111111,也就是2的31次方减1。
再来看最小值,-2的31次方的原码表示为10000000 00000000 0000000000000000,此时最高位的数字既代表符号,也代表数值。求它的补码,所得结果为10000000 00000000 0000000000000000。同样也是最高位既代表符号又代表数值,也就是说-2的31次方的原码和补码是相同的。
接着试试-2的31次方减1,它的原码为(假设先不考虑溢出)11111111 11111111 1111111111111111,求反加1之后为10000000 00000000 0000000000000001,变成了-1。所以,int的表示范围是:
然后是移位运算符:
[cpp] view plaincopy
- int
i = 1; - i
= i << 2;
这是把i左移两位,左移的规则只记住一点:丢弃符号位,0补最低位!
如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了332=1位。
右移有两种,算术右移(带符号)>>和逻辑右移(不带符号)>>>。
算术右移:符号位不变,左边补上符号位。如:1000 1000 >> 3 为 1111 0001
逻辑右移:符号位一起移动,左边补上0。如:10001000 >>>3
本文转自:http://blog.csdn.net/jiangyi711/article/details/5217431
0 0
- c语言int表示范围以及移位运算符
- [转]c语言int表示范围以及移位运算符
- c语言int表示范围以及移位运算符
- C语言移位运算符
- C语言移位运算符
- C语言移位运算符
- C语言移位运算符
- c语言中int的表示范围是-32768~32767!
- C语言移位运算符精度问题
- C语言的移位运算符
- c语言中的移位运算符
- C语言的移位运算
- 【C语言】移位运算符、位运算符、逻辑运算符
- c语言中int(2byte)的表示范围是为什么是-32768~32767!
- 为什么C语言中int的表示范围是-32768~32767
- 为什么说C语言中int的表示范围是-32768~32767?
- 什么c语言中int的表示范围是-32768~32767
- 为什么C语言中int的表示范围是-32768~32767
- 汉尼拔,刻画的真好!
- 亚健康调理的方法
- 教父三部曲 影评
- android:run模式还会出现"w…
- 每个人都有一双剪刀手--《剪刀手爱…
- c语言int表示范围以及移位运算符
- 人性中的最黑暗面——《电锯惊魂》影…
- char* str和char str[]的区别
- 多尺度与多分辨率的理解
- 巫毒术--信则有不信则无《万能钥匙…
- 《末代皇帝》影评
- 小米手机防盗 方法、安全及可…
- 解决android socket编程出现…
- 饮食男女,人之大欲-- 《饮食…