当前位置:网站首页>signed、unsigned关键字
signed、unsigned关键字
2022-07-06 14:40:00 【是北豼不太皮吖】
signed、unsigned关键字
我们知道计算机底层只认识 0、1.任何数据到了底层都会变计算转换成 0、1。那负数怎么存储呢?肯定这个“-”号是无法存入内存的,怎么办?很好办,做个标记。把基本数据类型的最高位腾出来,用来存符号,同时约定如下:最高位如果是 1,表明这个数是负数,其值为除最高位以外的剩余位的值添上这个“-”号;如果最高位是 0,表明这个数是正数,其值为除最高位以外的剩余位的值。
int main()
{
char a[1000];
int i;
for(i=0; i<1000; i++)
{
a[i] = -1-i;
}
printf("%d",strlen(a));
return 0;
}
要做这个题首先要考虑两个问题
1.数值在计算机是怎么保存的。在计算机系统中,数值一律用补码来表示(存储)
2.发生溢出后会怎么保存。发生了溢出,-129 需要 9 位才能存储下来,而 char 类型数据只有 8 位,所以最高位被丢弃。
还要懂得原码与补码之间的相互转换
下面是解题的一些步骤
1.答:
假设+0 和 -0 都是int数据。int型数据大小为4Byte = 32 bit
我们知道,整型数据在内存中存放的是二进制的补码。
2.答:
如若按 %d 输出为 -10;按 %u 输出为一个很大的值。
算出来的补码再转化为原码
以无符号整数形式(%u)输出
上面求出来的补码是一样的,那原码也是这个,只不过用%u输出的时候,最高位不是符号位了,而变成了数值位,所以就变成了一个很大的数。
3.答:
定义了一个无符号的整形变量i,我们知道无符号数永远大于等于0,所以i>=0 的判断一直为真。程序执行会死循环。
具体的情况我们依然可以通过补码进行,。我们知道-1的补码为32个1,i为无符号整形,所以其对应10进制数位:2^32 -1 =4294967295。所以程序的运行结果为:9,8, 7, 6,5,4, 3,2, 1,0,4294967295,4294967294 …
下面来测试一下
#include<stdio.h>
#include<Windows.h>
int main()
{
unsigned i;
for (i = 9; i >= 0; i--)
{
printf("%u\n", i);
Sleep(1000);
}
return 0;
}
边栏推荐
- Assembly and Interface Technology Experiment 6 - ADDA conversion experiment, AD acquisition system in interrupt mode
- 二分图判定
- What are the interface tests? What are the general test points?
- 将MySQL的表数据纯净方式导出
- Build op-tee development environment based on qemuv8
- Data processing skills (7): MATLAB reads the data in the text file TXT with mixed digital strings
- BarcodeX(ActiveX打印控件) v5.3.0.80 免费版使用
- labelimg的安装与使用
- RESNET rs: Google takes the lead in tuning RESNET, and its performance comprehensively surpasses efficientnet series | 2021 arXiv
- MySQL数据库基本操作-DML
猜你喜欢
[Digital IC hand tearing code] Verilog burr free clock switching circuit | topic | principle | design | simulation
The nearest common ancestor of binary (search) tree ●●
Aardio - 不声明直接传float数值的方法
Oracle control file and log file management
Aardio - 封装库时批量处理属性与回调函数的方法
Management background --4, delete classification
Assembly and interface technology experiment 5-8259 interrupt experiment
第3章:类的加载过程(类的生命周期)详解
C # réalise la liaison des données du rapport Crystal et l'impression du Code à barres 4
Aardio - 通过变量名将变量值整合到一串文本中
随机推荐
Seata聚合 AT、TCC、SAGA 、 XA事务模式打造一站式的分布式事务解决方案
About the professional ethics of programmers, let's talk about it from the way of craftsmanship and neatness
UNI-Admin基础框架怎么关闭创建超级管理员入口?
Crawler obtains real estate data
2022年6月国产数据库大事记-墨天轮
2021 geometry deep learning master Michael Bronstein long article analysis
NPDP认证|产品经理如何跨职能/跨团队沟通?
MySQL约束的分类、作用及用法
VIP case introduction and in-depth analysis of brokerage XX system node exceptions
3DMAX assign face map
重磅新闻 | Softing FG-200获得中国3C防爆认证 为客户现场测试提供安全保障
RESNET rs: Google takes the lead in tuning RESNET, and its performance comprehensively surpasses efficientnet series | 2021 arXiv
Unity3d Learning Notes 6 - GPU instantiation (1)
extern关键字
What a new company needs to practice and pay attention to
Data processing skills (7): MATLAB reads the data in the text file TXT with mixed digital strings
414. The third largest digital buckle
将MySQL的表数据纯净方式导出
Report on technological progress and development prospects of solid oxide fuel cells in China (2022 Edition)
中国VOCs催化剂行业研究与投资战略报告(2022版)