当前位置:网站首页>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;
}
边栏推荐
猜你喜欢
[sciter]: encapsulate the notification bar component based on sciter
GPS from getting started to giving up (12), Doppler constant speed
Daily question 1: force deduction: 225: realize stack with queue
Senior soft test (Information System Project Manager) high frequency test site: project quality management
Crawler obtains real estate data
Chapter 3: detailed explanation of class loading process (class life cycle)
BarcodeX(ActiveX打印控件) v5.3.0.80 免费版使用
Seata aggregates at, TCC, Saga and XA transaction modes to create a one-stop distributed transaction solution
第4章:再谈类的加载器
Search element topic (DFS)
随机推荐
Learn the principle of database kernel from Oracle log parsing
Embedded common computing artifact excel, welcome to recommend skills to keep the document constantly updated and provide convenience for others
SQL Server生成自增序号
HDU 4912 paths on the tree (lca+)
Insert sort and Hill sort
Xiaoman network model & http1-http2 & browser cache
2022-07-05 stonedb的子查询处理解析耗时分析
Senior soft test (Information System Project Manager) high frequency test site: project quality management
新手程序员该不该背代码?
AI 企业多云存储架构实践 | 深势科技分享
GNN, please deepen your network layer~
GPS from getting started to giving up (12), Doppler constant speed
0 basic learning C language - digital tube
BarcodeX(ActiveX打印控件) v5.3.0.80 免费版使用
Heavyweight news | softing fg-200 has obtained China 3C explosion-proof certification to provide safety assurance for customers' on-site testing
Crawler obtains real estate data
[sciter]: encapsulate the notification bar component based on sciter
[sdx62] wcn685x will bdwlan Bin and bdwlan Txt mutual conversion operation method
Management background --4, delete classification
2022-07-05 使用tpcc对stonedb进行子查询测试