一、无符号数与有符号数

1.计算机中的符号位

数据类型的最高位用于标识数据的符号

  -最高位为1,表明这个数为负数

  -最高位为0,表明这个数为正数

 #include <stdio.h>

 int main()
{
char c = -;
short s = ;
int i = -; printf("%d\n", ( (c & 0x80) != ));
printf("%d\n", ( (s & 0x8000) != ));
printf("%d\n", ( (i & 0x80000000) != )); return ;
}

2.有符号数的表示法

在计算机内部用补码表示有符号数

  -正数的补码为正数本身

  -负数的补码为负数的绝对值各位取反加一

3.无符号数的表示法

在计算机内部用原码表示无符号数

  -无符号数默认为正数

  -无符号数没有符号位

对于固定长度的无符号数

  -MAX_VALUE+1 ->MIN_VALUE

  -MIN_VALUE - 1 ->MAX_VALUE

C语言中默认为有符号数类型

unsigned 关键字声明变量为无符号类型

C语言中只有整数类型能够声明unsigned变量

当有符号数遇到无符号数时:

实例分析:

 #include <stdio.h>

 int main()
{ unsigned int i = ;
int j = -; if( (i + j) > )
{
printf("i + j > 0\n");
}
else
{
printf("i + j <= 0\n");
} return ;
}

有符号数要转换成无符号数

错误使用unsigned

实例分析2:

 #include <stdio.h>

 int main()
{ unsigned int i = ; for(i=; i>=; i--)
{
printf("i = %u\n", i);
} return ;
}

小结:

有符号数用补码表示

  -正数的符号位为0

  -负数的符号位为1

无符号数用原码表示

  -无符号数没有符号位

  -无符号数只有表示正数

unsigned只能修饰整数类似的变量

当有符号与无符号数混合计算时,会将有符号数转换成无符号数再进行计算,结果为无符号数

C语言-无符号数与有符号数不为人知的秘密的更多相关文章

  1. C语言中无符号数和有符号数之间的运算

    C语言中无符号数和有符号数之间的运算 C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了. un ...

  2. matlab和FPGA中无符号数和有符号数的转化(转)

    在FPGA 设计过程中经常会遇到关于数表示之间的转化问题,最常见的是无符号数和有符号数之间的转化问题.(1)在FPGA设计过程中,能够很直接的看出数字的位宽,但经常以无符号数的形式输出,在后继的处理中 ...

  3. C语言迷题:有符号数与无符号数的问题(转)

    https://my.oschina.net/kelvinfang/blog/134725

  4. C语言中 有符号数、无符号数、整数溢出 (转)

    #include<stdio.h> void main() { int l=-1; unsigned int c=135; printf("%u\n",l+c); } ...

  5. java 理解有符号数和无符号数

    转至:http://jinguo.iteye.com/blog/212049 理解有符号数和无符号数负数在计算机中如何表示呢? 这一点,你可能听过两种不同的回答. 一种是教科书,它会告诉你:计算机用“ ...

  6. c的基础 1. 无符号数和补码

    计算机中储存和处理的信息是以二进制信号表示的.单个的位不是是很实用,而将这些位 组合在一起,加上某种解释,即给不同的可能位模式赋予含义,我们就行表示怎样有限集合的元素,即实现各种数据结构.计算机中使用 ...

  7. Verilog有符号数处理

    内容主要摘自以下两个链接:  https://www.cnblogs.com/LJWJL/p/3481995.html  https://www.cnblogs.com/LJWJL/p/3481807 ...

  8. 关于vector变量的size,是一个无符号数引发的bug。LeetCode 3 sum

    class Solution { public: vector<vector<int>> threeSum(vector<int>& a) { vector ...

  9. 深入理解计算机系统(2.5)------C语言中的有符号数和无符号数以及扩展和截断数字

    上一篇博客我们讲解了计算机中整数的表示,包括无符号编码和补码编码,以及它们之间的互相转换,个人觉得那是非常重要的知识要点.这篇博客我们将介绍C语言中的有符号数和无符号数以及扩展和截断数字. 1.C语言 ...

随机推荐

  1. 网易MuMu模拟器不显示Menu(菜单)键的解决办法

    解决方法一: 前提:需要一个键盘 步骤: 1.直接按下键盘上的Menu键. 解决方法二: 前提:需要Root之后的文件浏览器 步骤: 1.在文件管理器中打开 /System 文件夹: 2.复制 bui ...

  2. 关系模式范式分解教程 3NF与BCNF口诀

    https://blog.csdn.net/sumaliqinghua/article/details/86246762 [通俗易懂]关系模式范式分解教程 3NF与BCNF口诀!小白也能看懂原创置顶 ...

  3. Java基础之一、入门知识

    资料来源于<明解 Java>日本作者 写的很详细 1:命令---java 类名 该命令不是去执行类名.class文件(文件名和类名有可能不一致),切记是表示执行具体的类: 2:“字符”+数 ...

  4. cf936B

    题意简述:给出一个有向图,问从s出发是否能找到一条长度为奇数的路径并且路径的端点出度为0,存在就输出路径,如果不存在判断图中是否存在环,存在输出Draw,否则输出lose 题解:类似于DP,将每一个点 ...

  5. PHP0015:PHP分页案例

  6. 哈尔滨工业大学(深圳)本科毕业设计(论文)LaTeX模板:hitszthesis

    目录 本篇文章的主要内容如下: 目录 引言 Why hitszthesis? 下载方式 编译方式简介 模板说明文档(用户手册) 毕业论文撰写样例 后记 引言 去年发布过哈深本科毕业设计(论文)的LaT ...

  7. 剑指offer-拓展训练-字符的所有组合-全组合

    /* 题目: 给定不含重复字符字符串的全组合. */ /* 思路: 递归法. 例给定abc,输出的组合长度为1,2,3. 对于长度为2的组合,分选择a(ab,ac)和不选择a的情况(bc). 选择a, ...

  8. cf1214E

    题意简述:构造一棵包含2*n个节点的树,要求2*i 和 2*i-1之间的距离等于d[i]<=n 1<=i<=n 给出N和d数组,输入对应的边 题解:对d数组按照从大到小排序,然后首先 ...

  9. PHP0008:PHP基础-数组

  10. MVC开发之Razor的使用

    一.运用布局和视图起始文件 布局的使用,可以简化视图,允许用户创建能够运用于多个视图的通用HTML,并使得维护更加容易.下面是一个简单的例子: 域模型类: public class Product { ...