当前位置:   article > 正文

位,字节,字_unsigned __int64

unsigned __int64

#位,字节,字
1.位是计算机中最小的存储单位,bit,用于存储1或0;
2.字节长度是固定的,1个字节是8位,是计算机最常用的存储单元
3字的长度是不固定的,是设计计算机时给定的自然长度,由计算机个体决定,8位的微型计算机字长便是8位,个人计算机有16位的,48b的,64b的,计算机的字长越大,其数据转移越快,允许访问的内存也越多。
#数据类型
##分类
①有无符号分为有符号类型和无符号类型
②数据特点分为整型,浮点型(又称为实型),字符型,枚举型,数组型,结构体型。
##各种类型的声明以及所能表示的数据类型和长度
①整型,short,规定占用的空间不能多于int,int,最少占16位即2个字节,通常是4个字节32位int;long规定占用的空间不能少于int。long long占用的空间不能少于64位。unsigned_int64表示64位无符号整型,打印时用%lld或者%l64d(d前为小写L,不是数字一,不同的编译器使用的说明不同)转换说明,也可以用%llu或%llu;long long ago很少用到。
short a;
int b;
long c;
long long d;
②浮点型
浮点型一般占用4个字节,32位,其中最高的1位存储符号位,接着8位存储指数e,最后23位存储小数部分,存储范围是0到2的23次方-1。注意一点e也有正负,所以存储e的8位不是直接存储e,而是存储e+127,指数范围是2的负7次方到2的7次方-1,计算机内实际存储的是0~255,大于127的是正,小于127的是负。例如e=2,存储的是129,返回时129-127=2。e=-2时,存储的是125,返回时125-127=-2。
③char字符型
char实际是整型的一种,占8位,按照ASCII编码标准,编号0~255每个编号对应一个字符,我的收藏中有ASCII编码表。
##不同类型的数据在相互运算时类型自动提升问题
类型提升原则:
1 为防止精度损失如果必要的话类型总是被提升为较宽的类型
2 所有小于整型的类型在计算之前都会被转换成整型
3 计算出结果后再转为左值类型并赋给左值
我们也可以强行进行数据类型转换:类型转换符
类型转换运算符优先级低于括号,高于运算符
测试代码:

#include<stdio.h>
 
int main(void)
{
    int a = 3;
    int b = 17;
    float c = 31.0f;
 
        //类型转换运算符优先级低于括号,高于运算符。                                                                                                                                                        
 
    printf("%f  float(a/b)*c \n",(float)(a/b)*c); //首先进行a/b运算,然后把结果转成float,然后与c相乘                                                                                                        
    printf("%f  (float(a/b))*c \n",((float)(a/b))*c); //首先进行a/b运算,然后把结果转成float,然后与c相乘                                                                                                     
    printf("%f  (float(a/b))*c \n",((float)) a/b*c); //首先把a转成浮点,然后除以b,然后乘以c                                                                                                                  
 
    printf("%f a/b*c \n", a/b*c); //运算规则同数学运算。a/b=0, 0*c=0.00000f                                                                                                                                 
    printf("%f a/(b*c) \n", a/(b*c)); //运算规则同数学运算。b*c=527.00000f, a/527.0000f=0.005693                                                                                                            
  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

运行结果:

0.000000  float(a/b)*c
0.000000  (float(a/b))*c
5.470588  (float(a/b))*c
0.000000 a/b*c
0.005693 a/(b*c)
  • 1
  • 2
  • 3
  • 4
  • 5

##打印问题
printf("%2.3f", a);
2表示提供两个字符空间,3表示小数点后保留3位。

##signed int用%d打印,unsigned int用%u打印
%d在解释过程中第一位数据代表了符号,%u第一位数据代表了数据值
%d解释过程:
1.第一位是1,所以为负值。
2.由补码再求补码
%u解释过程:
直接将其按原码处理
##整型和浮点型的存储方案不同
计算机把浮点数分位小数部分和指数部分,并分开存储。而整型只有指数部分。
3.16E7表示3.16乘以10的七次方
##有符号类型和无符号类型
1无符号类型声明,unsigned,数据范围变大,最高位不表示符号,表示数据,输出时用%u作为转换说明,%u会将最高位解释为数值。
2有符号类型,不经过unsigned声明的都是有符号类型,特别强调可以用signed声明变量。最高位表示符号,负为1,正为0,usigned int和int声明的变量是一样的,但signed特别强调了变量为有符号的。输出时使用%d作为转换说明,%d会将最高位解释为符号。
##unsigned __int64 打印方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/432153
推荐阅读
  

闽ICP备14008679号