D4数据类型转换
来源:互联网 发布:小米2s改装4g网络 编辑:程序博客网 时间:2024/06/10 03:12
int a = -12;
printf("%u", a);
//4294967284
-12
源码:10000000 00000000 00000000 00001100
反码:11111111 11111111 11111111 11110011
补码:11111111 11111111 11111111 11110100
当我们用%u格式控制符输出a时,计算机将会把它识别为
一个无符号的正整数.此时最高位上原本作位符号位的1
将被当作计数位,同时因为整数的原码反码补码是一样
的,所以直接输出得到4294967284;
数据转换:
当不同类型的数据参与运算时,低字节数据会自动转换为高字节数据的类型.
当给数据赋值时,等号右边的数据类型会自动转换成等号左边的数据类型.
float a = 1.3f, b = 1.5f;
float c1 = (int)(a + b), c2 = (int)a + b;
printf("%f,%f",c1 ,c2);
printf("%lf", (double)3 / 2);
printf("%lf", (double)(3/2));
强制转换得到所需类型的中间变量,原变量类型、变量值保持不变
精度缺失:发生在多字节数类型强制转化为少字节数类型时.
short a = 258; 97+128 //+256//+512
char b = a;
printf("%c",b);
00000001 01100001
01100001
当少字节数转化为多字节数的时候,多出来的位需要补0或补符号位.
具体取决于多字节数的类型是有符号还是无符号.
如果是无符号,统一补0,如果是有符号则将低字节数的最高位当作符号位去补.
如:
char a = 129;
short b = a;
a 129: 10000001char型占一个字节
b -------- -------- 占两个字节
-------- 10000001 后面八位直接搬进来
因为b是有符号类型,所以高八位需要补符号位,而此时符号位是1
所以补全之后的数据存储形式如下:
11111111 10000001
注意! 注意! 注意! 计算机存储数据是存的是二进制补码.
所以读取改数据时要还原成原码,正数不用管,负数则要遵循转换规则:
原码 = 反码取反
反码 = 补码 - 1;
反推得到原码: 10000000 11111111 即:-127;
家庭作业:
1,已知 short a = x; char b = a;
如果printf("%c",b),得到'E',
请问1000以内,x的值可以是多少?
2,-3%7; -7%2, 131%11; (-17)%(-12); -12%9; 9%-4;
3,将一个四位数abcd,变为dabc, 如:1234 转化成 4123;
4,定义一个整形的变量,值为你们的手机号码,假设这是你的寿命单位为秒,
假设一年 = 12月, 一月= 30天,
请将你的寿命转化成:X年X月X天X时X分X秒的格式输出.
printf("%u", a);
//4294967284
-12
源码:10000000 00000000 00000000 00001100
反码:11111111 11111111 11111111 11110011
补码:11111111 11111111 11111111 11110100
当我们用%u格式控制符输出a时,计算机将会把它识别为
一个无符号的正整数.此时最高位上原本作位符号位的1
将被当作计数位,同时因为整数的原码反码补码是一样
的,所以直接输出得到4294967284;
数据转换:
当不同类型的数据参与运算时,低字节数据会自动转换为高字节数据的类型.
当给数据赋值时,等号右边的数据类型会自动转换成等号左边的数据类型.
float a = 1.3f, b = 1.5f;
float c1 = (int)(a + b), c2 = (int)a + b;
printf("%f,%f",c1 ,c2);
printf("%lf", (double)3 / 2);
printf("%lf", (double)(3/2));
强制转换得到所需类型的中间变量,原变量类型、变量值保持不变
精度缺失:发生在多字节数类型强制转化为少字节数类型时.
short a = 258; 97+128 //+256//+512
char b = a;
printf("%c",b);
00000001 01100001
01100001
当少字节数转化为多字节数的时候,多出来的位需要补0或补符号位.
具体取决于多字节数的类型是有符号还是无符号.
如果是无符号,统一补0,如果是有符号则将低字节数的最高位当作符号位去补.
如:
char a = 129;
short b = a;
a 129: 10000001char型占一个字节
b -------- -------- 占两个字节
-------- 10000001 后面八位直接搬进来
因为b是有符号类型,所以高八位需要补符号位,而此时符号位是1
所以补全之后的数据存储形式如下:
11111111 10000001
注意! 注意! 注意! 计算机存储数据是存的是二进制补码.
所以读取改数据时要还原成原码,正数不用管,负数则要遵循转换规则:
原码 = 反码取反
反码 = 补码 - 1;
反推得到原码: 10000000 11111111 即:-127;
家庭作业:
1,已知 short a = x; char b = a;
如果printf("%c",b),得到'E',
请问1000以内,x的值可以是多少?
2,-3%7; -7%2, 131%11; (-17)%(-12); -12%9; 9%-4;
3,将一个四位数abcd,变为dabc, 如:1234 转化成 4123;
4,定义一个整形的变量,值为你们的手机号码,假设这是你的寿命单位为秒,
假设一年 = 12月, 一月= 30天,
请将你的寿命转化成:X年X月X天X时X分X秒的格式输出.
阅读全文
0 0
- D4数据类型转换
- D4
- d4.exe
- D4-记录
- phpbb关于转换D4或者升级以后出现乱码情况的说明
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- Spring MVC环境中的文件上传功能实现
- dockwidget 设置里面的控件填满整个dockwidget的方法
- 使用Python进行FME的批处理
- 用Python解线性方程组——Scipy包和自己写
- POJ 3080 后缀数组
- D4数据类型转换
- 使用四字节命令读写256Mb QSPI Flash
- Spring MVC环境中文件上传大小和文件类型限制以及超大文件上传bug问题
- 深度学习-->NLP-->语言模型
- 【USACO6.1.3】Cow XOR奶牛异或 trie
- virtualbox扩展centos6.5虚拟机磁盘
- 小随笔 SQL语句中的条件判断CASE
- SpannableString花式文本混排
- win10系统改win7设置bios方法图文教程