先看一段代码

#include <stdio.h>
main(){
unsigned char a = ;
char b = a;
printf("%d %d",a,b);
return ; }

a输出为128,b输出为-128。原因在于无符号类型和有符号类型像高精度转化时候不一样。

char类型长度是1个字节8位,而数字在计算机中是以补码形式存储的。 所以a=128在计算机内对应的值是0x80。把a赋给b,b的值也是0x80。

输出时候,printf会把a、b转化为int类型。而int类型是4个字节32位。关键在于char怎么转化为int。

转换的原则:有符号signed类型像高精度类型转换时候,符号位拓展;无符号unsigned类型像高精度类型转换时候,前面补0。

所以a是unsigned类型,char比int少了24位,在前面补0,a的值变成了0x0000 0080。

b是signed类型,在前面补1,b的值变成了0xFFFF FF80。

数字在计算机内是以补码形式存储的。

a的值是正数,补码是他本身,输出为128,b的补码求出来是-128。

unsigned无符号、有符号类型的符号拓展的更多相关文章

  1. C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)

    详解link  有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错 ...

  2. ArcGis实现添加MultiLayerMarkerSymbol(多个符号叠加生成新的符号)

    , , );             pMarkerSymbol.Angle = ;             pMarkerSymbol.XOffset = ;;;;, , );            ...

  3. (转载) C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)

    转载http://blog.csdn.net/neo_ustc/article/details/9024839 有 些人写C/C++(以下假定为C++)程序,对unresolved external ...

  4. php将中文符号全部替换为英文符号

    php将中文符号全部替换为英文符号 一.总结 一句话总结:可以用简单替换和规律替换 简单替换 str_replace() 规律替换 均相差 65248 方法一:简单替换(php代码) $val1=st ...

  5. php函数前面加&符号 和 变量前面加&符号的意义

    php函数前面加&符号 和 变量前面加&符号的意义 php函数前面加&符号的意思是函数的引用返回,php函数前面加&符号有什么作用呢 function &tes ...

  6. 3星|华杉华楠《超级符号原理》:超级符号是指注册为商标的企业logo

    “ 超级符号是私有财产,超级符号是通过对传统符号的改造,使之成为注册商标,成为私有化财产,通过占有它,让竞争对手无法使用.P112” 超级符号原理 作者: 华杉 华楠 出版社: 文汇出版社 出版年: ...

  7. MySQL学习----unsigned 无符号的总结

    unsigned    为“无符号”的意思,          unsigned,zerofill    既为非负数,用此类型可以增加数据长度,      例如如果    int最大是65535,那  ...

  8. PowerShell控制台输出符号+函数参数类型指定+文本内容读取

    There are several ways: Write-Host: Write directly to the console, not included in function/cmdlet o ...

  9. 解决 “MoveFile”: 类型库“XXX.dll”中的标识符已经是宏;使用“rename”限定符 类型库符号与系统符号冲突问题

    今天在VS工程当中引入一个组件,编译的时候出现警告, “MoveFile”: 类型库“XXX.dll”中的标识符已经是宏:使用“rename”限定符.虽然只是一个警告,但看着实在不爽,更重要的是,警告 ...

随机推荐

  1. Java源码分析之ArrayList

    ArrayList是以数组为基准的容器类,和LinkedList(链表)正好相反.因而ArrayList拥有更好的查找性能,增删操作则差一些.ArrayList封装了对于常规数组的操作,同时可以自动扩 ...

  2. easyui-datagrid连接数据库实现分页查询数据

    一.利用MVC思想建立底层数据库: package com.hanqi.dao; import java.util.ArrayList; import java.util.List; import o ...

  3. 【转】70个经典的 Shell 脚本面试问题

    我们为你的面试准备选择了 70 个你可能遇到的 shell 脚面问题及解答.了解脚本或至少知道基础知识对系统管理员来说至关重要,它也有助于你在工作环境中自动完成很多任务.在过去的几年里,我们注意到所有 ...

  4. SQLSERVER自动定时(手动)备份工具

    最近项目需要,写了一个小工具软件: 1.实时显示监控 2.可多选择备份数据库 3.按每天定时备份 4.备份文件自动压缩 5.删除之前备份文件 直接上图 1.备份监控界面: 2.数据库设置: 附工具下载 ...

  5. Red Hat Enterprise Linux Server 6.5安装GCC 4.9.2

    现在很多程序员都应用GCC,怎样才能更好的应用GCC.目前,GCC可以用来编译C/C++.FORTRAN.JAVA.OBJC.ADA等语言的程序,可根据需要选择安装支持的语言.本文以在RedHat L ...

  6. LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8)

    LVM 类型的 Storage Pool 不仅一个文件可以分配给客户机作为虚拟磁盘,宿主机上 VG 中的 LV 也可以作为虚拟磁盘分配给虚拟机使用. 不过,LV 由于没有磁盘的 MBR 引导记录,不能 ...

  7. Node Pm2 配置

    系统环境:Centos7 第一步安装NodeJS 建议采用稳定编译过的版本,source code稍麻烦,编译过的直接可用,安装超级简单 下载完成后安装成功 node -v 显示版本号 npm -v ...

  8. Linux cut命令

    [root@wang /]# cat /etc/passwd root:x:::root:/root:/bin/bash bin:x:::bin:/bin:/sbin/nologin daemon:x ...

  9. Linux FHS

    学习linux有必要了解FHS的知识,FHS英文全称是Filesystem Hierarchy Standard.中文翻译就是文件系统层次结构标准.关于这个详细的介绍参考官方的文档和鸟哥linux书. ...

  10. 联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595

    联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595 admin 资讯 01-07 1 1月7日消息,联发科宣布与Google共同开发出全世界第一个搭载Android TV操作系统 ...