首页 > 其他分享 >整数类型(3)

整数类型(3)

时间:2023-11-11 23:45:55浏览次数:35  
标签:11111111 int unsigned 整数 128 127 类型 255

<1>数的范围

(1)整体范围:对于一个字节(8 bit)可以表达的数的范围为00000000——11111111;

(2)在数的范围中

  • 00000000——>0;
  • 00000001~ 01111111——>1~ 127,高位为0,在纯二进制中表示1~127;
  • 10000000~ 11111111——>-1~ -128,高位为1,在补码表示-1~ -128;

计算机中所存在的一切数据都用纯二进制表示,但是我们在使用过程中通常当它为整数(一个字节char的整数)以11111111为例,纯二进制表示为255,但是以整数看则为-1

1)代码运行如下:

#include<stdio.h>

int main(){
int i=255;
char c=255;
printf("%d %d",i,c);
return 0;
}
输出结果:c=-1,i=255;
出现此类情况的原因是:c为字符型,仅有一个字节8bit,但是i为整型,有32bit;
//11111111;
//00000000 00000000 00000000 11111111;

由此得出整数的范围:

char:1字节:-128~127;
short:2字节:-32768~32767;
int:取决于编译器(CPU),通常为一个字节:-2^(32-1) ~ 2^(32-1)-1;
long:4个字节;
long long:8个字节;

注意:之所以负数部分比整数部分大一,是因为将256分成三份,负数部分(128);0;正数部分(127);

总结规律:整数类型的范围为-2^(n-1)~ 2^(n-1)-1;

若我们希望数据以二进制类型得出,则需要在类型前使用unsigned

<2>引入unsigned

————unsigned意为整数不以补码的形式输出,也可以理解为最高位为1的数全部以纯二进制类型看待

(1)代码如下:将char c=255改为unsigned char c=255,输出则为c=255;

unsigned在char中应用:

不使用unsigned:00000000-11111111在char中的范围为-128~127;
使用unsigned:00000000-11111111在char中正数范围扩大,上限由127扩大到258,但是不能表达负数;

1. 若一个字面量想常数想表达自己为unsigned,可以在后面加上u或者U(例如255U);

2. 用l或者L表示long(long);

3. unsigned引入的初衷并不是是为了扩大数能表达的范围,而是为了做纯二进制运算,主要是为了移位;

<3>整数越界

整数是以纯二进制方式进行计算的,所以:

  • 11111111(-1)+1->100000000->0;
  • 01111111(127)+1->10000000->-128;
  • 10000000(128)-1->01111111->127;

由此可以总结出规律,将整数范围看作一个圆圈,圆圈以-1/0;127/-128为分界线,

正确顺序:
-128||127
-1||0

1. 在-1||0之间顺时针走:0-1=-1;逆时针走-1+1=0;

2. 在-128||127之间顺时针走:127+1=-128;逆时针走-128-1=127

2)对于unsigned而言这个圆圈分界为255||0;255+1=0,0-1=255;

一段可以得出int数据类型最大数和位数的代码

#include<stdio.h>

int mian(){
int a=0,b=0;
while (++a>0);注释:达到最大值后加一结果会变为负数
printf("int数据类型最大数是:%d\n",a-1);
b++;
while ((a=a/10)!=0){
b++;
}
printf("int数据类型最大的数的数位是:%d,b);
return 0;
}

标签:11111111,int,unsigned,整数,128,127,类型,255
From: https://www.cnblogs.com/QingYuY/p/17825362.html

相关文章

  • 13. 罗马数字转整数
    目录题目法一、最笨的办法法二、找到一点规律的解法题目罗马数字包含以下七种字符:I(1),V(5),X(10),L(50),C(100),D(500)和M(1000)例如,罗马数字2写做 II ,即为两个并列的1。12写做 XII ,即为 X + II 。27写做  XXVII,即为 XX + V + II 。通常情况下,罗马数字中小的......
  • 输入三个整数让其从大到小排列
    ......
  • 类型转换
     ......
  • 当使用“===”进行比较时,需要严格区分数据类型
    执行以下程序,输出结果为()letflag1=null||undefined;letflag2=null&&undefined;if(flag1===true)console.log('flag1');if(flag2===false)console.log('flag2');Aflag1Bflag2Cflag1、flag2D什么都不会输出正确答案:D官方解析:不管是a||b还是......
  • 下面哪些方式在同一个窗口下能够检测一个js对象是数组类型?
    下面哪些方式在同一个窗口下能够检测一个js对象是数组类型?AArray.isArray()BinstanceofCtypeofDObject.prototype.toString.call()正确答案:ABDA:Array为js的原生对象,它有一个静态方法:Array.isArray(),能判断参数是否为数组B:instanceof运算符返回一个布尔值,表示对象是......
  • 整数分块
    整数分块(真的会考吗)对于形如\(\sum_{i=1}^{n}\lfloorx/i\rfloor\)的式子,我们有这么一个\(O(\sqrtn)\)的做法别管证明了,我已经不是很记得了,反正形式很简单for(intl=1,r;l<=n;l=r+1){if(k/l!=0)r=min(k/(k/l),n);elser=n;sum+=(r-l+1)*(k/l);}当......
  • 整数的四则运算(一步)
    #include<bits/stdc++.h>usingnamespacestd;stringno1(string);//清除多余空格intno2(string);//计算加法intno3(string);//计算减法intno4(string);//计算乘法intno5(string);//计算除法intmain(){stringstr;getline(cin,str);str=no1(st......
  • WOFF字体的MIME类型是什么?
    内容来自DOChttps://q.houxu6.top/?s=WOFF字体的MIME类型是什么?WOFF字体应该使用什么MIME类型进行服务?我正在将TrueType(ttf)字体作为font/truetype进行服务,OpenType(otf)字体作为font/opentype进行服务,但是我找不到WOFF字体的正确格式。我尝试过font/woff、font/webopen和font......
  • 在Objective-C中,我如何测试对象的类型?
    内容来自DOChttps://q.houxu6.top/?s=在Objective-C中,我如何测试对象的类型?我需要测试对象是否是NSString或UIImageView类型。我该如何实现?是否有一种类似于“isoftype”的方法可以使用?如果你的对象是myObject,并且你想测试它是否为NSString类型,代码如下:[myObjecti......
  • typeof只能检测数据类型,而不能检测从数据类型中派生的其他类型,数组为object派生对象,所
    typeof[]返回值为objecttypeof只能检测数据类型,而不能检测从数据类型中派生的其他类型,数组为object派生对象,所以依然返回objecttypeof判断引用类型数据,除了function以外都会判断成为objectfunctionfn(){console.log(1);}conso......