c语言int表示范围以及移位运算符

您所在的位置:网站首页 c语言逻辑运算会改变值吗 c语言int表示范围以及移位运算符

c语言int表示范围以及移位运算符

2024-06-13 04:28| 来源: 网络整理| 查看: 265

刚刚看到的几个小基础知识,记录一下:在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。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3