社区
新手乐园
帖子详情
整型赋值
delectation
2011-09-27 11:31:10
c++ primer(第四版,特别版)P32,有这样一段话:
c++中,把负值赋给unsigned对象完全合法的,其结果是该负数对该类型的取值个数求模后的值。所以,如果把-1赋给8位的unsigned char,那么结果是255,因为255是-1对256求模后的值。
请问:-1对256求模后的值为何是255?
...全文
151
8
打赏
收藏
微信扫一扫
点击复制链接
分享
下载分享明细
分享
举报
写回复
8 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
andy1658
2011-09-29
5楼介绍的文章很不错啊,顶一下
打赏
举报
回复
赞
一蚊惊人小号
2011-09-28
哦,原来是这样
打赏
举报
回复
赞
_了凡_
2011-09-28
1楼6楼殊途同归啊。
打赏
举报
回复
赞
pathuang68
2011-09-28
[Quote=引用楼主 delectation 的回复:]
c++ primer(第四版,特别版)P32,有这样一段话:
c++中,把负值赋给unsigned对象完全合法的,其结果是该负数对该类型的取值个数求模后的值。所以,如果把-1赋给8位的unsigned char,那么结果是255,因为255是-1对256求模后的值。
请问:-1对256求模后的值为何是255?
[/Quote]
x % 256 = 255,那么可以有x = k * 256 + 255, 且k须为整数。若k = -1, 那么x = -1,所以说“255是-1对256求模后的值”
打赏
举报
回复
赞
5t4rk
2011-09-28
[Quote=引用 1 楼 jake443403168 的回复:]
32位机为例
由于数据是用补码存储
有符号的-1在内存中是1111 1111 1111 1111 1111 1111 1111 1111
赋值给 unsigned char 截取得到1111 1111
由于是 unsigned 最高位编译器不再认为是符号位,所以是个正数了。 还原为原码得到的就是255
[/Quote]
就是这么回事
楼主看看这个吧 就明白了
http://blog.163.com/shi_shun/blog/static/237078492010651063936/
打赏
举报
回复
赞
我喝多了
2011-09-28
内存中负数是用补码表示的,稍微看一下补码吧
打赏
举报
回复
赞
seucs
2011-09-27
简单的说就是将起表示成2进制位以后对超出的高位作截断处理
打赏
举报
回复
赞
Jake443403168
2011-09-27
32位机为例
由于数据是用补码存储
有符号的-1在内存中是1111 1111 1111 1111 1111 1111 1111 1111
赋值给 unsigned char 截取得到1111 1111
由于是 unsigned 最高位编译器不再认为是符号位,所以是个正数了。 还原为原码得到的就是255
打赏
举报
回复
赞
相关推荐
无符号
整型
赋值
陷阱
有没有人尝试过将负数赋给一个无符号
整型
变量?知不知道这样做会发生什么?还没有尝试的就让我们来探索下无符号
整型
隐藏的秘密。 先来看看下面代码: int main() { unsigned int val = -1; cout ...
c++ 原子操作
赋值
_C/C++
整型
变量
赋值
操作是原子性的吗?
整型
变量
赋值
操作不是原子操作那么为什么
整型
变量的操作不是原子性的呢?常见的
整型
变量操作有如下几种情况:给
整型
变量
赋值
一个确定的值,如int a = 1;这条指令操作一般是原子的,因为对应着一条计算机指令,cpu将...
无符号变量转有符号变量 && C++
整型
赋值
越界处理(VC++)
1. 无符号
整型
,unsigned char (0~255): unsigned char x = 336; // x = (336 + n256) % 256 = 80 unsigned char x = -1; // x = (-1 + n256) % 256 = 255 2.
整型
,char (-128~127): char x = 129;...
整型
变量逐位取出
赋值
字符数组
将
整型
变量每个字节对应的值分离出来给字符数组
赋值
: 方法1: 移位: int value = 258; chartable[4] = {'\0'} for(i=0;i<4;i++) { table[i] = ((value >>(8*i)) & 0xff); } 方法2: 共用体 ...
数组
赋值
问题 +
整型
计算后
赋值
给浮点型 问题
重点是 C :先定义,后
赋值
,我只是觉得这个选项比较怪所以选的,它并不是定义的同时
赋值
解释: 数组名为地址(这就是为什么给数组用scanf赋字符串的时候不用加地址符“ & ”),地址是一个常量,常量不能...
发帖
新手乐园
微信扫一扫
点击复制链接
分享社区
下载分享明细
3.3w+
社区成员
4.1w+
社区内容
C/C++ 新手乐园
社区管理员
加入社区
帖子事件
创建了帖子
2011-09-27 11:31
社区公告
暂无公告