C语言中的unsigned int是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中的unsigned int是啥相关的知识,希望对你有一定的参考价值。
无符号的整数指的是什么?与int有什么区别?
unsigned integer意思是“无符整型”,表示从0开始到2^32-1的所有整数。unsigned 后的int可以省略的。
具体用法如下:
unsigned a;
a=5;
或:unsigned int a;
a=5;
16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned int能存储的数据范围则是0~65535,在计算机中,整数是以补码形式存放的。
根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大 。
扩展资料
1、int 是整数类型,用于定义变量的类型,有符号unsigned int 是无符号的整数类型,直白点说有符号无符号整型就是能不能存放负数。
2、根据程序编译器的不同,整形定义的字节数不同。注意一下取值范围。
int是 两字节 16位 但是有效位为15 第1位为符合位
unsigned int 的有效位为16 但是不能表示负数的
例如:int 1111 1111 1111 1111和unsigned int1111 1111 1111 111是不一样的
前者是 -1后者是65535本回答被提问者采纳 参考技术B 如果是整数的话,则其对应的最高位解释为整数的正负符号。如果是无符号整数的话,则最高位仍然解释为数据位,因此,无符号整数均大于或等于0 参考技术C 无符号整形只有0和正数,没有负数,正数的上限扩大一倍(占用了负数的空间)
比如 char 的范围是 -128 - 127
那么 unsigned char的范围就是 0-256 参考技术D 无符号的整数指非负数,一般16位 范围0-2^17-1
int是有符号的,一般16位 范围-32768--32767
c# 中 unsigned long int 的等价物是啥?
【中文标题】c# 中 unsigned long int 的等价物是啥?【英文标题】:What is the equivalent of unsigned long int in c#?c# 中 unsigned long int 的等价物是什么? 【发布时间】:2014-01-31 17:01:30 【问题描述】:我有一个定义如下的 C 结构:
typedef struct
unsigned long int a;
TEST;
我想创建一个与此结构等效的 C#?
有什么帮助吗?让我困惑的是“unsigned long int”至少是 32 位,这是什么意思,它是 32 位、64 位还是 16 位,对吧?
【问题讨论】:
依赖平台?你能用uint64_t
替换C代码中的unsigned long int
吗?
我的平台是 64 位的。不,我不能替换它,图书馆已经建成。
检查sizeof(TEST)
。 4 -> 32 位,8 -> 64 位。
C 类型的大小不取决于“您的系统有多少位”,而是取决于操作系统和编译器约定。例如,windows 64 位上的 long 是 32 位,而在 Linux/Unix 64 位上它是 64 位
【参考方案1】:
您需要uint
或ulong
,具体取决于您的原生C 平台上的int
或long
:
uint
是 32 位
C# ulong
是 64 位
至少和平台依赖性在 C 中是一个必要的问题,因为它实际上被翻译成机器代码,并且 C 是为许多具有不同 字长的架构而开发的。相反,C# 是针对虚拟机定义的(与 Java 或 Javascript 完全一样),因此可以抽象出硬件的 字长,以支持虚拟机由语言的标准 VM(C# 中的 CLR)定义。 VM 和硬件之间的差异字长由 VM 处理并隐藏到托管代码中。
【讨论】:
我的原生平台是 64 位的。所以,在这种情况下,它是 ulong,对吧? 是的,那肯定是ulong
:)
@pid 除非 OP 在那个奇异且几乎不使用的平台 Microsoft Windows 上以上是关于C语言中的unsigned int是啥的主要内容,如果未能解决你的问题,请参考以下文章