在计算机的内部,我们所有的信息都是由二进制数字组成的

有符号数的表实法:

  • 在计算机内部用补码的方式表实有符号数
  • 正数的补码位正数的本身
  • 负数的补码为其绝对值取反然后加一得到

例如-7 他在计算机内部的是1111 1001          是这样得到的 7-》111-》0000 0111-》1111 1000-》1111 1001

无符号整数的表示:

  • 在计算机内部用原码表实无符号整数
  • 无符号整数默认为正数
  • 无符号整数没有符号位

对于固定长度的无符号整数:

  • max+1=min
  • min-1=max

C语言中默认为有符号类型,可以通过unsigned来声明无符号类型的整数,特别注意,只有整数可以声明为无符号整数,浮点数没有无符号类型

代码示例1:

#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 ;
}

这里面可以通过与(位运算)来实验最高位是0还是1

代码示例2:

#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 ;
}

这段代码我们应该仔细分析一下,-10+5应该是个负数,可是为什莫会打印 i+j>0。因为在计算无符号和有符号类型做运算时,计算机会把有符号转化为无符号然后才开始进行计算

示例代码3:

#include <stdio.h>

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

这段代码错误的使用了无符号类型,导致不会退出循环,因为无符号类型你0-1后又是一个很大的正数

dfsaf

C语言进阶——有符号与无符号02的更多相关文章

  1. 深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断

    开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完.主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿 ...

  2. C语言的有符号与无符号,二进制整数的扩展与截断

    C语言的有符号与无符号,二进制整数的扩展与截断 前一节说了整数的表示方式,,也就是无符号编码与补码编码.这一届说一下二进制整数的扩展与截断,这部分内容与C语言挂钩.so,我们先看下面C语言的有符号和无 ...

  3. Java-java中的有符号,无符号操作以及DataInputStream

    1. 无符号和有符号 计算机中用补码表示负数,并且有一定的计算方式:另外,用二进制的最高位表示符号,0表示正数.1表示负数.这种说法本身没错,可是要有一定的解释,不然它就是错的,至少不能解释,为什么字 ...

  4. int有符号和无符号类型内存 -- C

    /* int 有符号 0xffffffff == -1 0xfffffffe == -2 最小 0x80000000 == -21 4748 3648 最大 0x7fffffff == 21 4748 ...

  5. java中有符号和无符号数据类型发生转换

    package com.itheima.test01;/* * byte short int long float double 是有符号位的数 * char boolean 是无符号位的数 * 补码 ...

  6. 结构体位制 中存在 有符号 与 无符号 -- C

    #include <stdio.h> #include <stdlib.h> #include <string.h> /* 有符号 结构体1 */ struct b ...

  7. char类型到底是有符号还是无符号

    根据c标准,char类型到底是有符号整数类型还是无符号整数类型,这取决于c实现,也就是c编译器的作者的想法:( 那么,如何快速的编写一个检测程序,查看当前编译器如何对char进行定义? #includ ...

  8. 【 c语言中无符号和有符号的加法运算】【深入理解】--【sky原创】

    原文:[ c语言中无符号和有符号的加法运算][深入理解]--[sky原创]   第一题 #include<stdio.h> int main() { unsigned int a=6; i ...

  9. ABAP语言实现 左移 <<、无符号右移 >>> 位移操作

    这几天要在ABAP中实现 3DES 标准对称加密算法,与其他外部系统进行加密/解密操作.由于ABAP语言中没有 左移 <<.无符号右移 >>>  操作,只能自己实现 思路 ...

随机推荐

  1. Sharepoint2010新建一个用户的方法

    最近在做关于SharePoint的相关开发,在开发中需要用到测试用户进行相关权限的测试,所以就需要创建一个新的用户进行,但是在网上找了很久都没有找到关于创建一个新用户的资料,最后终于在http://w ...

  2. WebSocket Demo

    HTML 代码: <body> <h1>WebScoket示例</h1> <br /><br /> <input type=" ...

  3. pm2的的常用命令及用法

    使用pm2启动静态文件服务器的方法如下: pm2 serve path port pm2 serve . 9001 这样就可以把当前文件夹下的静态文件跑起来了,而且端口号是9001, 同样也支持进阶的 ...

  4. Refactoring in Coding

    Make changes on existing code for subsequent and constant changes of requirement. Reference:http://w ...

  5. Window10 Bug记录

    1.两台新电脑刚安装: 妹子的电脑JDK配置后,重启后环境变量配置丢失,cmd里能输出,但eclipse启动不了,重新配置后正常. 我的电脑JDK配置,重启后环境变量在,但好像没加载,cmd输出与ec ...

  6. Shader学习笔记整理

    1.常用矩阵 UNITY_MATRIX_V 视口矩阵 UNITY_MATRIX_P 投影矩阵 UNITY_MATRIX_MV 模型矩阵 * 视口矩阵 UNITY_MATRIX_MVP 模型矩阵 * 视 ...

  7. zabbix 编译安装指导

    zabbix 编译安装 下载 安装 安装后的配置 下载源码包 zabbix官网:https://www.zabbix.com/ zabbix下载:https://www.zabbix.com/down ...

  8. Markdown快速上手指南

    Markdown快速上手指南 1.Markdown介绍 markdown可以实现快速html文档编辑,格式优没,并且不需要使用html元素. markdown采用普通文本的形式,例如读书笔记等易于使用 ...

  9. 笨办法学Python(十五)

    习题 15: 读取文件 你已经学过了 raw_input 和 argv,这些是你开始学习读取文件的必备基础.你可能需要多多实验才能明白它的工作原理,所以你要细心做练习,并且仔细检查结果.处理文件需要非 ...

  10. 腾讯云“动态加速”与“CDN”的区别——浅谈对“动态加速”的理解(可能有误)

    CDN的劣势及“动态加速”产生背景 通常CDN对静态内容支持较好,若使用其加速动态内容,可能会导致异常(如导致无法登录).当然,可以将动态内容的在CDN节点上的缓存时间设置为0秒来解决.但这毕竟是用户 ...